private async Task <int> CreateItem(MaterialsRequestNote_Item item) { item.FlagForCreate(IdentityService.Username, UserAgent); item.FlagForUpdate(IdentityService.Username, UserAgent); DbContext.MaterialsRequestNote_Items.Add(item); return(await DbContext.SaveChangesAsync()); }
public override async Task <int> UpdateModel(int Id, MaterialsRequestNote Model) { MaterialsRequestNote_ItemService materialsRequestNote_ItemService = this.ServiceProvider.GetService <MaterialsRequestNote_ItemService>(); materialsRequestNote_ItemService.Username = this.Username; int Updated = 0; using (var transaction = this.DbContext.Database.BeginTransaction()) { try { HashSet <int> materialsRequestNote_Items = new HashSet <int>(materialsRequestNote_ItemService.DbSet .Where(w => w.MaterialsRequestNoteId.Equals(Id)) .Select(s => s.Id)); Updated = await this.UpdateAsync(Id, Model); foreach (int materialsRequestNote_Item in materialsRequestNote_Items) { MaterialsRequestNote_Item model = Model.MaterialsRequestNote_Items.FirstOrDefault(prop => prop.Id.Equals(materialsRequestNote_Item)); if (model == null) { await materialsRequestNote_ItemService.DeleteModel(materialsRequestNote_Item); } else { await materialsRequestNote_ItemService.UpdateModel(materialsRequestNote_Item, model); } } foreach (MaterialsRequestNote_Item materialsRequestNote_Item in Model.MaterialsRequestNote_Items) { if (materialsRequestNote_Item.Id.Equals(0)) { await materialsRequestNote_ItemService.CreateModel(materialsRequestNote_Item); } } transaction.Commit(); } catch (Exception e) { transaction.Rollback(); } } return(Updated); }
public MaterialsRequestNote MapToModel(MaterialsRequestNoteViewModel viewModel) { MaterialsRequestNote model = new MaterialsRequestNote(); PropertyCopier <MaterialsRequestNoteViewModel, MaterialsRequestNote> .Copy(viewModel, model); model.UnitId = viewModel.Unit._id; model.UnitCode = viewModel.Unit.code; model.UnitName = viewModel.Unit.name; model.RequestType = viewModel.RequestType; model.Remark = viewModel.Remark; model.MaterialsRequestNote_Items = new List <MaterialsRequestNote_Item>(); foreach (MaterialsRequestNote_ItemViewModel materialsRequestNote_ItemViewModel in viewModel.MaterialsRequestNote_Items) { MaterialsRequestNote_Item materialsRequestNote_Item = new MaterialsRequestNote_Item(); PropertyCopier <MaterialsRequestNote_ItemViewModel, MaterialsRequestNote_Item> .Copy(materialsRequestNote_ItemViewModel, materialsRequestNote_Item); if (!viewModel.RequestType.Equals("PEMBELIAN") && !viewModel.RequestType.Equals("TEST")) { materialsRequestNote_Item.ProductionOrderId = materialsRequestNote_ItemViewModel.ProductionOrder._id; materialsRequestNote_Item.ProductionOrderNo = materialsRequestNote_ItemViewModel.ProductionOrder.orderNo; materialsRequestNote_Item.ProductionOrderIsCompleted = materialsRequestNote_ItemViewModel.ProductionOrder.isCompleted; materialsRequestNote_Item.OrderQuantity = (double)materialsRequestNote_ItemViewModel.ProductionOrder.orderQuantity; materialsRequestNote_Item.OrderTypeId = materialsRequestNote_ItemViewModel.ProductionOrder.orderType._id; materialsRequestNote_Item.OrderTypeCode = materialsRequestNote_ItemViewModel.ProductionOrder.orderType.code; materialsRequestNote_Item.OrderTypeName = materialsRequestNote_ItemViewModel.ProductionOrder.orderType.name; } materialsRequestNote_Item.ProductId = materialsRequestNote_ItemViewModel.Product._id; materialsRequestNote_Item.ProductCode = materialsRequestNote_ItemViewModel.Product.code; materialsRequestNote_Item.ProductName = materialsRequestNote_ItemViewModel.Product.name; materialsRequestNote_Item.Length = materialsRequestNote_ItemViewModel.Length != null ? (double)materialsRequestNote_ItemViewModel.Length : 0; materialsRequestNote_Item.DistributedLength = materialsRequestNote_ItemViewModel.DistributedLength != null ? (double)materialsRequestNote_ItemViewModel.DistributedLength : 0; model.MaterialsRequestNote_Items.Add(materialsRequestNote_Item); } return(model); }
private async Task <int> DeleteItem(MaterialsRequestNote_Item item) { item.FlagForDelete(IdentityService.Username, UserAgent); return(await DbContext.SaveChangesAsync()); }
public override async Task <int> UpdateModel(int Id, MaterialsRequestNote Model) { MaterialsRequestNote_ItemService materialsRequestNote_ItemService = this.ServiceProvider.GetService <MaterialsRequestNote_ItemService>(); materialsRequestNote_ItemService.Username = this.Username; int Updated = 0; using (var transaction = this.DbContext.Database.BeginTransaction()) { try { HashSet <object> materialsRequestNote_Items = new HashSet <object>(materialsRequestNote_ItemService.DbSet .Where(w => w.MaterialsRequestNoteId.Equals(Id)) .AsNoTracking()); //.Select(s => new { Id = s.Id, ProductionOrderId = s.ProductionOrderId })); Updated = await this.UpdateAsync(Id, Model); List <string> productionOrderIds = new List <string>(); List <string> newProductionOrderIds = new List <string>(); List <MaterialsRequestNote_Item> itemForUpdateInventory = new List <MaterialsRequestNote_Item>(); foreach (dynamic materialsRequestNote_Item in materialsRequestNote_Items) { MaterialsRequestNote_Item model = Model.MaterialsRequestNote_Items.FirstOrDefault <dynamic>(prop => prop.Id.Equals(materialsRequestNote_Item.Id)); if (model == null) { await materialsRequestNote_ItemService.DeleteModel(materialsRequestNote_Item.Id); productionOrderIds.Add(materialsRequestNote_Item.ProductionOrderId); itemForUpdateInventory.Add(materialsRequestNote_Item); } else { double length = materialsRequestNote_Item.Length - model.Length; materialsRequestNote_Item.Length = length; itemForUpdateInventory.Add(materialsRequestNote_Item); await materialsRequestNote_ItemService.UpdateModel(materialsRequestNote_Item.Id, model); } } foreach (MaterialsRequestNote_Item materialsRequestNote_Item in Model.MaterialsRequestNote_Items) { if (materialsRequestNote_Item.Id.Equals(0)) { await materialsRequestNote_ItemService.CreateModel(materialsRequestNote_Item); newProductionOrderIds.Add(materialsRequestNote_Item.ProductionOrderId); double length = materialsRequestNote_Item.Length * -1; materialsRequestNote_Item.Length = length; itemForUpdateInventory.Add(materialsRequestNote_Item); } } if (Model.RequestType != "PEMBELIAN") { Model.MaterialsRequestNote_Items = itemForUpdateInventory; this.CreateInventoryDocument(Model, "IN"); } UpdateIsRequestedProductionOrder(productionOrderIds, "UPDATE"); UpdateIsRequestedProductionOrder(newProductionOrderIds, "CREATE"); transaction.Commit(); } catch (Exception e) { transaction.Rollback(); } } return(Updated); }