private List <ItemSyncResponse> SyncCategories(SyncTransferObject transferObject, string userName) { var result = new List <ItemSyncResponse>(); using (var transaction = CategoriesService.NewTransaction()) { try { transferObject.Categories.ForEach(categoryTransferObject => { var modelState = (Models.ModelState)categoryTransferObject.State; switch (modelState) { case Models.ModelState.New: var category = CategoriesService.AddCategory(Category.FromTransferObject(categoryTransferObject), userName); result.Add(new ItemSyncResponse { OfflineId = categoryTransferObject.Id, Id = category.Id, State = ItemState.Created, Replacement = CategoryTransferObject.FromCategory(category) }); break; case Models.ModelState.Modified: var cat = Category.FromTransferObject(categoryTransferObject); var updatedCategory = CategoriesService.UpdateCategory(cat, userName); result.Add(new ItemSyncResponse { Id = cat.Id, OfflineId = cat.Id.ToString(), State = ItemState.Updated, Replacement = CategoryTransferObject.FromCategory(updatedCategory) }); break; case Models.ModelState.Deleted: var id = Guid.Parse(categoryTransferObject.Id); CategoriesService.DeleteCategory(id); result.Add(new ItemSyncResponse { Id = id, OfflineId = categoryTransferObject.Id, State = ItemState.Deleted }); break; } }); transaction.Commit(); } catch (Exception) { transaction.Rollback(); throw; } } return(result); }
public async Task <ActionResult <CategoryTransferObject> > CreateCategory(CategoryTransferObject category) { _categoryRepository.Create(category); await _categoryRepository.SaveChanges(); return(CreatedAtAction("CreateCategory", category)); }
public void Create(CategoryTransferObject category) { var cat = new Category { Name = category.MainCategory, SubCategories = category.SubCategories.Select(sc => new SubCategory { Name = sc }).ToList() }; _context.Categories.Add(cat); }
public async Task <ActionResult <CategoryTransferObject> > CreateCategory(CategoryTransferObject category) { try { var response = await _categoriesService.Post(category); return(Ok(response)); } catch (Exception ex) { return(BadRequest(ex.Message)); } }
/// <summary> /// ModelState -> will be provided by the client when syncinc after connection was lost /// </summary> public static Category FromTransferObject(CategoryTransferObject transferObject) { switch (transferObject.ModelState) { case ModelState.New: return(new Category { Name = transferObject.Name }); default: return(new Category { Id = Guid.Parse(transferObject.Id), Name = transferObject.Name }); } }