Exemplo n.º 1
0
        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));
            }
        }
Exemplo n.º 3
0
        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);
        }
Exemplo n.º 4
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
                {
                    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);
        }
Exemplo n.º 7
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)
                                {
                                    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);
        }