public async void Should_Success_Update_Data() { var facade = new GarmentBeacukaiFacade(_dbContext(GetCurrentMethod()), ServiceProvider); var facadeDO = new GarmentDeliveryOrderFacade(ServiceProvider, _dbContext(GetCurrentMethod())); GarmentBeacukai data = await dataUtil(facade, GetCurrentMethod()).GetNewData(USERNAME); GarmentBeacukaiViewModel viewModel = await dataUtil(facade, GetCurrentMethod()).GetViewModel(USERNAME); //var ResponseUpdate = await facade.Update((int)data.Id, viewModel,data, USERNAME); //Assert.NotEqual(ResponseUpdate, 0); var newItem = new GarmentBeacukaiItemViewModel { selected = true }; List <GarmentBeacukaiItemViewModel> Newitems = new List <GarmentBeacukaiItemViewModel>(viewModel.items); Newitems.Add(newItem); viewModel.items = Newitems; //List<GarmentBeacukaiItem> Newitems = new List<GarmentBeacukaiItem>(data.Items); var ResponseUpdate1 = await facade.Update((int)data.Id, viewModel, data, USERNAME); Assert.NotEqual(ResponseUpdate1, 0); }
public async Task <IActionResult> Put(int id, [FromBody] GarmentBeacukaiViewModel ViewModel) { try { identityService.Username = User.Claims.Single(p => p.Type.Equals("username")).Value; identityService.Token = Request.Headers["Authorization"].FirstOrDefault().Replace("Bearer ", ""); IValidateService validateService = (IValidateService)serviceProvider.GetService(typeof(IValidateService)); validateService.Validate(ViewModel); var model = mapper.Map <GarmentBeacukai>(ViewModel); await facade.Update(id, ViewModel, model, identityService.Username); Dictionary <string, object> Result = new ResultFormatter(ApiVersion, General.CREATED_STATUS_CODE, General.OK_MESSAGE) .Ok(); return(Created(String.Concat(Request.Path, "/", 0), Result)); } catch (ServiceValidationExeption e) { Dictionary <string, object> Result = new ResultFormatter(ApiVersion, General.BAD_REQUEST_STATUS_CODE, General.BAD_REQUEST_MESSAGE) .Fail(e); return(BadRequest(Result)); } catch (Exception e) { Dictionary <string, object> Result = new ResultFormatter(ApiVersion, General.INTERNAL_ERROR_STATUS_CODE, e.Message) .Fail(); return(StatusCode(General.INTERNAL_ERROR_STATUS_CODE, Result)); } }
public async Task Should_Success_Update_Data() { var facade = new GarmentBeacukaiFacade(_dbContext(GetCurrentMethod()), ServiceProvider); var facadeDO = new GarmentDeliveryOrderFacade(ServiceProvider, _dbContext(GetCurrentMethod())); GarmentBeacukai data = await dataUtil(facade, GetCurrentMethod()).GetTestData1(USERNAME); GarmentBeacukaiViewModel viewModel = await dataUtil(facade, GetCurrentMethod()).GetViewModel(USERNAME); var newModelItem = new GarmentBeacukaiItem { GarmentDOId = viewModel.items.First().deliveryOrder.Id, TotalQty = 1, TotalAmount = 1 }; data.Items.Add(newModelItem); List <GarmentBeacukaiItemViewModel> Newitems = new List <GarmentBeacukaiItemViewModel>(); foreach (GarmentBeacukaiItem i in data.Items) { var newItem = new GarmentBeacukaiItemViewModel { selected = true, deliveryOrder = new Lib.ViewModels.GarmentDeliveryOrderViewModel.GarmentDeliveryOrderViewModel { Id = i.GarmentDOId, }, Id = i.Id, billNo = null, quantity = 0 }; Newitems.Add(newItem); } viewModel.Id = data.Id; viewModel.items = Newitems; var ResponseUpdate1 = await facade.Update((int)data.Id, viewModel, data, USERNAME); Assert.NotEqual(0, ResponseUpdate1); var ResponseUpdate2 = await facade.Update((int)data.Id, viewModel, data, USERNAME); Assert.NotEqual(0, ResponseUpdate2); }
public async Task <int> Update(int id, GarmentBeacukaiViewModel vm, GarmentBeacukai model, string user, int clientTimeZoneOffset = 7) { int Updated = 0; using (var transaction = this.dbContext.Database.BeginTransaction()) { try { EntityExtension.FlagForUpdate(model, user, USER_AGENT); foreach (GarmentBeacukaiItemViewModel itemViewModel in vm.items) { GarmentBeacukaiItem item = model.Items.FirstOrDefault(s => s.Id.Equals(itemViewModel.Id)); if (itemViewModel.selected == true) { EntityExtension.FlagForUpdate(item, user, USER_AGENT); } else { EntityExtension.FlagForDelete(item, user, USER_AGENT); GarmentDeliveryOrder deleteDO = dbContext.GarmentDeliveryOrders.FirstOrDefault(s => s.Id == itemViewModel.deliveryOrder.Id); deleteDO.BillNo = null; deleteDO.PaymentBill = null; deleteDO.CustomsId = 0; } } this.dbSet.Update(model); Updated = await dbContext.SaveChangesAsync(); transaction.Commit(); } catch (Exception e) { transaction.Rollback(); throw new Exception(e.Message); } } return(Updated); }
public void Should_Success_Validate_Data() { GarmentBeacukaiViewModel nullViewModel = new GarmentBeacukaiViewModel(); Assert.True(nullViewModel.Validate(null).Count() > 0); GarmentBeacukaiViewModel viewModel = new GarmentBeacukaiViewModel { beacukaiNo = "", beacukaiDate = DateTimeOffset.MinValue, supplier = { }, customType = null, packagingQty = 0, netto = 0, bruto = 0, packaging = "", currency = { }, items = { } }; Assert.True(viewModel.Validate(null).Count() > 0); }
public async Task <int> Update(int id, GarmentBeacukaiViewModel vm, GarmentBeacukai model, string user, int clientTimeZoneOffset = 7) { int Updated = 0; using (var transaction = this.dbContext.Database.BeginTransaction()) { try { GarmentBeacukai modelBC = dbSet.AsNoTracking().Include(a => a.Items).FirstOrDefault(s => s.Id == model.Id); EntityExtension.FlagForUpdate(model, user, USER_AGENT); var lastPaymentBill = GeneratePaymentBillNo(); foreach (GarmentBeacukaiItem item in model.Items) { GarmentBeacukaiItem oldItem = modelBC.Items.FirstOrDefault(s => s.Id.Equals(item.Id)); GarmentBeacukaiItemViewModel itemVM = vm.items.FirstOrDefault(s => s.deliveryOrder.Id.Equals(item.GarmentDOId)); if (itemVM.selected) { if (oldItem == null) { GarmentDeliveryOrder deliveryOrder = dbSetDeliveryOrder.Include(m => m.Items) .ThenInclude(i => i.Details).FirstOrDefault(s => s.Id == item.GarmentDOId); if (deliveryOrder != null) { var deliveryOrderEPOIds = deliveryOrder.Items.Select(s => s.EPOId); var garmentExternalOrder = dbContext.GarmentExternalPurchaseOrders.Where(s => deliveryOrderEPOIds.Contains(s.Id)); if (model.BillNo == "" | model.BillNo == null) { deliveryOrder.BillNo = GenerateBillNo(); } else { deliveryOrder.BillNo = model.BillNo; } deliveryOrder.PaymentBill = string.Concat(lastPaymentBill.format, (lastPaymentBill.counterId++).ToString("D3")); //deliveryOrder.CustomsId = model.Id; double qty = 0; foreach (var deliveryOrderItem in deliveryOrder.Items) { foreach (var detail in deliveryOrderItem.Details) { qty += detail.DOQuantity; } } item.TotalAmount = Convert.ToDecimal(deliveryOrder.TotalAmount); item.TotalQty = qty; EntityExtension.FlagForCreate(item, user, USER_AGENT); deliveryOrder.CustomsId = model.Id; var dppAmount = 0.0; var currencyDPPAmount = 0.0; if (deliveryOrder.DOCurrencyCode == "IDR") { dppAmount = deliveryOrder.TotalAmount; } else { currencyDPPAmount = deliveryOrder.TotalAmount; dppAmount = deliveryOrder.TotalAmount * deliveryOrder.DOCurrencyRate.GetValueOrDefault(); } var categories = string.Join(',', garmentExternalOrder.Select(s => s.Category).ToList().GroupBy(s => s).Select(s => s.Key)); var paymentMethod = garmentExternalOrder.FirstOrDefault().PaymentType; var productNames = string.Join(", ", deliveryOrder.Items.SelectMany(doItem => doItem.Details).Select(doDetail => doDetail.ProductName).ToList()); await _garmentDebtBalanceService.CreateFromCustoms(new CustomsFormDto(0, string.Join("\n", categories), deliveryOrder.BillNo, deliveryOrder.PaymentBill, (int)deliveryOrder.Id, deliveryOrder.DONo, (int)model.SupplierId, model.SupplierCode, model.SupplierName, deliveryOrder.SupplierIsImport, (int)deliveryOrder.DOCurrencyId.GetValueOrDefault(), deliveryOrder.DOCurrencyCode, deliveryOrder.DOCurrencyRate.GetValueOrDefault(), productNames, deliveryOrder.ArrivalDate, dppAmount, currencyDPPAmount, paymentMethod)); } } else if (oldItem != null) { item.TotalAmount = oldItem.TotalAmount; item.TotalQty = oldItem.TotalQty; EntityExtension.FlagForUpdate(item, user, USER_AGENT); } } else { EntityExtension.FlagForDelete(item, user, USER_AGENT); GarmentDeliveryOrder deleteDO = dbContext.GarmentDeliveryOrders.FirstOrDefault(s => s.Id == item.GarmentDOId); deleteDO.BillNo = null; deleteDO.PaymentBill = null; deleteDO.CustomsId = 0; await _garmentDebtBalanceService.RemoveCustoms((int)deleteDO.Id); } } this.dbSet.Update(model); Updated = await dbContext.SaveChangesAsync(); transaction.Commit(); } catch (Exception e) { transaction.Rollback(); throw new Exception(e.Message); } } return(Updated); }
public async Task <int> Update(int id, GarmentBeacukaiViewModel vm, GarmentBeacukai model, string user, int clientTimeZoneOffset = 7) { int Updated = 0; using (var transaction = this.dbContext.Database.BeginTransaction()) { try { GarmentBeacukai modelBC = dbSet.AsNoTracking().Include(a => a.Items).FirstOrDefault(s => s.Id == model.Id); EntityExtension.FlagForUpdate(model, user, USER_AGENT); var lastPaymentBill = GeneratePaymentBillNo(); foreach (GarmentBeacukaiItem item in model.Items) { GarmentBeacukaiItem oldItem = modelBC.Items.FirstOrDefault(s => s.Id.Equals(item.Id)); GarmentBeacukaiItemViewModel itemVM = vm.items.FirstOrDefault(s => s.deliveryOrder.Id.Equals(item.GarmentDOId)); if (itemVM.selected) { if (oldItem == null) { GarmentDeliveryOrder deliveryOrder = dbSetDeliveryOrder.Include(m => m.Items) .ThenInclude(i => i.Details).FirstOrDefault(s => s.Id == item.GarmentDOId); if (deliveryOrder != null) { if (model.BillNo == "" | model.BillNo == null) { deliveryOrder.BillNo = GenerateBillNo(); } else { deliveryOrder.BillNo = model.BillNo; } deliveryOrder.PaymentBill = string.Concat(lastPaymentBill.format, (lastPaymentBill.counterId++).ToString("D3")); //deliveryOrder.CustomsId = model.Id; double qty = 0; foreach (var deliveryOrderItem in deliveryOrder.Items) { foreach (var detail in deliveryOrderItem.Details) { qty += detail.DOQuantity; } } item.TotalAmount = Convert.ToDecimal(deliveryOrder.TotalAmount); item.TotalQty = qty; EntityExtension.FlagForCreate(item, user, USER_AGENT); deliveryOrder.CustomsId = model.Id; } } else if (oldItem != null) { item.TotalAmount = oldItem.TotalAmount; item.TotalQty = oldItem.TotalQty; EntityExtension.FlagForUpdate(item, user, USER_AGENT); } } else { EntityExtension.FlagForDelete(item, user, USER_AGENT); GarmentDeliveryOrder deleteDO = dbContext.GarmentDeliveryOrders.FirstOrDefault(s => s.Id == item.GarmentDOId); deleteDO.BillNo = null; deleteDO.PaymentBill = null; deleteDO.CustomsId = 0; } } this.dbSet.Update(model); Updated = await dbContext.SaveChangesAsync(); transaction.Commit(); } catch (Exception e) { transaction.Rollback(); throw new Exception(e.Message); } } return(Updated); }