예제 #1
0
        public async Task <ActionResult> Post([FromBody] MemoDetailGarmentPurchasingViewModel viewModel)
        {
            try
            {
                VerifyUser();
                _validateService.Validate(viewModel);

                MemoDetailGarmentPurchasingModel model = _mapper.Map <MemoDetailGarmentPurchasingModel>(viewModel);

                await _service.CreateAsync(model);

                var result = new ResultFormatter(ApiVersion, General.CREATED_STATUS_CODE, General.OK_MESSAGE).Ok();
                return(Created(String.Concat(Request.Path, "/", 0), result));
            }
            catch (ServiceValidationException e)
            {
                var result = new ResultFormatter(ApiVersion, General.BAD_REQUEST_STATUS_CODE, General.BAD_REQUEST_MESSAGE).Fail(e);
                return(BadRequest(result));
            }
            catch (Exception e)
            {
                var result =
                    new ResultFormatter(ApiVersion, General.INTERNAL_ERROR_STATUS_CODE, e.Message)
                    .Fail();
                return(StatusCode(General.INTERNAL_ERROR_STATUS_CODE, result));
            }
        }
        public async Task <MemoDetailGarmentPurchasingViewModel> ReadByIdAsync(int id)
        {
            var result = (MemoDetailGarmentPurchasingViewModel)null;
            var model  = _dbContext.MemoDetailGarmentPurchasings.FirstOrDefault(entity => entity.Id == id);

            if (model != null)
            {
                result = new MemoDetailGarmentPurchasingViewModel()
                {
                    Id       = model.Id,
                    IsPosted = model.IsPosted,
                    MemoId   = model.MemoId,
                    Remarks  = model.Remarks
                };

                var memoDispositions = _dbContext.MemoDetailGarmentPurchasingDispositions.Where(entity => entity.MemoDetailGarmentPurchasingId == id).ToList();
                var dispositionIds   = memoDispositions.Select(element => element.Id).ToList();
                var memoDetails      = _dbContext.MemoDetailGarmentPurchasingDetails.Where(entity => dispositionIds.Contains(entity.MemoDispositionId));
                var deliveryOrderIds = memoDetails.Select(element => element.GarmentDeliveryOrderId).ToList();
                //var debtBalances = _dbContext.GarmentDebtBalances.Where(entity => deliveryOrderIds.Contains(entity.GarmentDeliveryOrderId)).ToList();

                result.MemoDetailGarmentPurchasingDispositions = memoDispositions.Select(disposition =>
                {
                    var details = memoDetails.Where(detail => detail.MemoDispositionId == disposition.Id).ToList();

                    var mDetails = details.Select(detail =>
                    {
                        //var debtBalance = debtBalances.FirstOrDefault(element => element.GarmentDeliveryOrderId == detail.GarmentDeliveryOrderId);
                        return(new MemoDetail()
                        {
                            GarmentDeliveryOrderId = detail.GarmentDeliveryOrderId,
                            GarmentDeliveryOrderNo = detail.GarmentDeliveryOrderNo,
                            RemarksDetail = detail.RemarksDetail,
                            PaymentRate = detail.PaymentRate,
                            PurchasingRate = detail.PurchasingRate,
                            MemoAmount = detail.MemoAmount,
                            MemoIdrAmount = detail.MemoIdrAmount,
                            BillsNo = detail.BillsNo,
                            CurrencyCode = detail.CurrencyCode,
                            InternalNoteNo = detail.InternalNoteNo,
                            PaymentBills = detail.PaymentBills,
                            SupplierCode = detail.SupplierCode,
                            SupplierName = detail.SupplierName,
                            PurchaseAmount = detail.PurchaseAmount
                        });
                    }).ToList();

                    return(new MemoDetailGarmentPurchasingDispositionViewModel()
                    {
                        Disposition = new DispositionDto()
                        {
                            DispositionId = disposition.DispositionId,
                            DispositionNo = disposition.DispositionNo,
                            MemoDetails = mDetails
                        }
                    });
                }).ToList();
            }
            return(result);
        }
        public async Task <IActionResult> Put([FromRoute] int id, [FromBody] MemoDetailGarmentPurchasingViewModel viewModel)
        {
            try
            {
                VerifyUser();

                _validateService.Validate(viewModel);
                await _service.UpdateAsync(id, viewModel);

                return(NoContent());
            }
            catch (ServiceValidationException 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 void Should_Success_Validate_Memo_Detail_Garment_Purchasing()
        {
            var vm = new MemoDetailGarmentPurchasingViewModel()
            {
                MemoDetailGarmentPurchasingDispositions = new List <MemoDetailGarmentPurchasingDispositionViewModel>()
                {
                    new MemoDetailGarmentPurchasingDispositionViewModel()
                    {
                        Disposition = new DispositionDto()
                    }
                }
            };

            Assert.True(vm.Validate(null).Count() > 0);
        }
        //public void CreateModel(MemoDetailGarmentPurchasingModel model)
        //{
        //    EntityExtension.FlagForCreate(model, _identityService.Username, UserAgent);


        //    foreach (var item in model.MemoDetailGarmentPurchasingDetail)
        //    {
        //        EntityExtension.FlagForCreate(item, _identityService.Username, UserAgent);
        //    }
        //    DbSet.Add(model);
        //}

        public async Task <int> CreateAsync(MemoDetailGarmentPurchasingViewModel viewModel)
        {
            try
            {
                var memo  = _dbContext.MemoGarmentPurchasings.FirstOrDefault(entity => entity.Id == viewModel.MemoId);
                var model = new MemoDetailGarmentPurchasingModel()
                {
                    AccountingBookId      = memo.AccountingBookId,
                    AccountingBookType    = memo.AccountingBookType,
                    GarmentCurrenciesCode = memo.GarmentCurrenciesCode,
                    GarmentCurrenciesId   = memo.GarmentCurrenciesId,
                    GarmentCurrenciesRate = memo.GarmentCurrenciesRate,
                    MemoDate = memo.MemoDate,
                    MemoId   = viewModel.MemoId,
                    MemoNo   = memo.MemoNo,
                    Remarks  = viewModel.Remarks
                };
                EntityExtension.FlagForCreate(model, _identityService.Username, UserAgent);
                _dbContext.MemoDetailGarmentPurchasings.Add(model);
                await _dbContext.SaveChangesAsync();

                foreach (var item in viewModel.MemoDetailGarmentPurchasingDispositions)
                {
                    var memoItem = new MemoDetailGarmentPurchasingDispositionModel()
                    {
                        DispositionId = item.Disposition.DispositionId,
                        DispositionNo = item.Disposition.DispositionNo,
                        MemoDetailGarmentPurchasingId = model.Id
                    };
                    EntityExtension.FlagForCreate(memoItem, _identityService.Username, UserAgent);
                    _dbContext.MemoDetailGarmentPurchasingDispositions.Add(memoItem);
                    await _dbContext.SaveChangesAsync();

                    foreach (var detail in item.Disposition.MemoDetails)
                    {
                        var memoDetail = new MemoDetailGarmentPurchasingDetailModel()
                        {
                            GarmentDeliveryOrderId = detail.GarmentDeliveryOrderId,
                            GarmentDeliveryOrderNo = detail.GarmentDeliveryOrderNo,
                            MemoAmount             = (int)detail.MemoAmount,
                            MemoDispositionId      = memoItem.Id,
                            RemarksDetail          = detail.RemarksDetail,
                            MemoDetailId           = model.Id,
                            MemoId         = memo.Id,
                            PaymentRate    = detail.PaymentRate,
                            PurchasingRate = detail.PurchasingRate,
                            SupplierCode   = detail.SupplierCode,
                            SupplierName   = detail.SupplierName,
                            BillsNo        = detail.BillsNo,
                            InternalNoteNo = detail.InternalNoteNo,
                            CurrencyCode   = detail.CurrencyCode,
                            PaymentBills   = detail.PaymentBills,
                            PurchaseAmount = detail.PurchaseAmount
                        };

                        EntityExtension.FlagForCreate(memoDetail, _identityService.Username, UserAgent);
                        _dbContext.MemoDetailGarmentPurchasingDetails.Add(memoDetail);
                        await _dbContext.SaveChangesAsync();
                    }
                }
                return(await _dbContext.SaveChangesAsync());
            }
            catch (Exception e)
            {
                throw e;
            }
        }
        public void UpdateModel(int id, MemoDetailGarmentPurchasingViewModel viewModel)
        {
            //MemoDetailGarmentPurchasingModel existDb = DbSet.FirstOrDefault(entity => entity.Id == id);


            //existDb.MemoId = viewModel.MemoId;
            //existDb.Remarks = viewModel.Remarks;
            //existDb.MemoNo = viewModel.MemoNo;
            //existDb.MemoDate = viewModel.MemoDate;
            //existDb.AccountingBookId = viewModel.AccountingBookId;
            //existDb.AccountingBookType = viewModel.AccountingBookType;
            //existDb.GarmentCurrenciesId = viewModel.GarmentCurrenciesId;
            //existDb.GarmentCurrenciesCode = viewModel.GarmentCurrenciesCode;
            //existDb.GarmentCurrenciesRate = viewModel.GarmentCurrenciesRate;
            //existDb.IsPosted = viewModel.IsPosted;

            //EntityExtension.FlagForUpdate(existDb, _identityService.Username, UserAgent);
            //DbSet.Update(existDb);

            //var details = _dbContext.MemoDetailGarmentPurchasingDetails.Where(entity => entity.MemoId == id).ToList();
            //foreach (var existRow in details)
            //{
            //    EditDetailRincianItems itemModel = viewModel.Items.FirstOrDefault(p => p.Id.Equals(existRow.Id));
            //    if (itemModel == null)
            //    {
            //        EntityExtension.FlagForDelete(existRow, _identityService.Username, UserAgent);
            //    }
            //    else
            //    {
            //        existRow.GarmentDeliveryOrderId = itemModel.GarmentDeliveryOrderId;
            //        existRow.GarmentDeliveryOrderNo = itemModel.GarmentDeliveryOrderNo;
            //        existRow.RemarksDetail = itemModel.RemarksDetail;
            //        existRow.PaymentRate = itemModel.PaymentRate;
            //        existRow.PurchasingRate = itemModel.PurchasingRate;
            //        existRow.MemoAmount = itemModel.MemoAmount;
            //        existRow.MemoIdrAmount = itemModel.MemoIdrAmount;

            //        EntityExtension.FlagForUpdate(existRow, _identityService.Username, UserAgent);
            //    }

            //}

            //_dbContext.MemoDetailGarmentPurchasingDetails.UpdateRange(details);

            //foreach (var item in viewModel.Items)
            //{
            //    if (item.Id == 0)
            //    {
            //        MemoDetailGarmentPurchasingDetailModel model = new MemoDetailGarmentPurchasingDetailModel();

            //        model.GarmentDeliveryOrderId = item.GarmentDeliveryOrderId;
            //        model.GarmentDeliveryOrderNo = item.GarmentDeliveryOrderNo;
            //        model.RemarksDetail = item.RemarksDetail;
            //        model.PaymentRate = item.PaymentRate;
            //        model.PurchasingRate = item.PurchasingRate;
            //        model.MemoAmount = item.MemoAmount;
            //        model.MemoIdrAmount = item.MemoIdrAmount;
            //        model.MemoDetailId = id;

            //        EntityExtension.FlagForCreate(model, _identityService.Username, UserAgent);
            //        DbSetDetail.Add(model);
            //    }
            //}
        }