func (controller *HomeController) Edit(input *HomeEditInput) mvc.ActionResultInterface {
	product := controller.findProduct(input.ProductId)
	if product == nil {
		product = new(Product)
	}

	return mvc.JsonResult(ProductVMFromProduct(product))
}
func (controller *HomeController) EditPost(productVM *ProductVM) mvc.ActionResultInterface {
	if len(productVM.Name) == 0 {
		productVM.Error = "Name can't be empty"
		return mvc.JsonResult(productVM)
	}

	productToUpdate := controller.findProduct(productVM.ProductId)
	if productToUpdate == nil {
		productAddSync.Lock()
		defer productAddSync.Unlock()

		productToUpdate = &Product{len(products) + 1, "", ""}
		products = append(products, productToUpdate)
	}

	productToUpdate.Name = productVM.Name
	productToUpdate.Description = productVM.Description

	return mvc.JsonResult(ProductVMFromProduct(productToUpdate))
}
func (controller *HomeController) List() mvc.ActionResultInterface {
	return mvc.JsonResult(products)
}