// POST api/account/accountId/updateProducts public UpdateProductsResponseModel Post(int accountId, [FromBody] UpdateProductsRequestModel value) { var context = new SyncApiContext(); var response = new UpdateProductsResponseModel(); // TODO 404 if account doesnt exist // TODO auth // TODO logging // TODO async this biatch var productsForAccount = context.Products.Where(p => p.Account.Id == accountId).ToList(); foreach (var product in value.Products) { var productToEdit = productsForAccount.SingleOrDefault(p => p.Id == product.Id); if (productToEdit != null) { productToEdit.Name = product.Name; productToEdit.Deleted = product.Deleted; response.UpdatedProducts.Add(new UpdateProductResponseModel { ExternalId = product.ExternalId, Id = productToEdit.Id }); } } context.SaveChanges(); return(response); }
// // GET: /Dashboard/ public ActionResult Index(int accountId) { var context = new SyncApiContext(); var account = context.Accounts.Find(accountId); if (account == null) { return(new HttpNotFoundResult("No Account with id " + accountId)); } var products = context.Products.Where(p => p.Account.Id == account.Id).ToList(); var viewModel = new DashboardViewModel() { AccountId = accountId, Products = products }; return(View(viewModel)); }
public ProductsViewModel Get(int accountId) { var result = new ProductsViewModel { AccountId = accountId }; var context = new SyncApiContext(); // TODO handle account does not exist with a 404s // TODO logging // TODO authentication var account = context.Accounts.Find(accountId); var products = context.Products.Where(p => p.Account.Id == account.Id).ToList(); foreach (var product in products) { result.Products.Add(new ProductViewModel { Id = product.Id, Name = product.Name, Deleted = product.Deleted }); } return(result); }
// POST api/account/accountId/newProducts public NewProductsResponseModel Post(int accountId, [FromBody] NewProductsRequestModel value) { // TODO make all this asynchronous and parallelelel // TODO, this creates an account if it doesnt exist, kill this later on when we have a way to register accounts // TODO logging // TODO authentication var context = new SyncApiContext(); AccountModel account = context.Accounts.Find(accountId); if (account == null) { account = new AccountModel { Id = accountId }; context.Accounts.Add(account); context.SaveChanges(); } var response = new NewProductsResponseModel(); foreach (var product in value.Products) { var newProduct = new ProductModel() { Account = account }; context.Products.Add(newProduct); context.SaveChanges(); response.CreatedProducts.Add(new NewProductResponseModel { ExternalId = product.ExternalId, Id = newProduct.Id }); } //Parallel.ForEach(value.Products, p => SaveProduct(p, response, context, account)); return(response); }