public async Task <int> CreateAsync(BankCashReceiptModel model)
        {
            model.ReceiptNo = await GenerateNo(model, 7);

            decimal totalAmount = 0;

            foreach (var item in model.Items)
            {
                if (model.CurrencyCode == "IDR")
                {
                    totalAmount += item.Summary;
                }
                else
                {
                    totalAmount += item.Amount;
                }
            }

            model.Amount = totalAmount;
            EntityExtension.FlagForCreate(model, _identityService.Username, UserAgent);
            foreach (var item in model.Items)
            {
                EntityExtension.FlagForCreate(item, _identityService.Username, UserAgent);
            }
            _dbContext.GarmentFinanceBankCashReceipts.Add(model);
            return(await _dbContext.SaveChangesAsync());
        }
Ejemplo n.º 2
0
        public async Task <ActionResult> Post([FromBody] BankCashReceiptViewModel viewModel)
        {
            try
            {
                VerifyUser();

                ValidateService.Validate(viewModel);
                BankCashReceiptModel model = Mapper.Map <BankCashReceiptModel>(viewModel);
                await Service.CreateAsync(model);

                Dictionary <string, object> Result =
                    new ResultFormatter(ApiVersion, General.CREATED_STATUS_CODE, General.OK_MESSAGE)
                    .Ok();
                return(Created(String.Concat(Request.Path, "/", 0), Result));
            }
            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));
            }
        }
Ejemplo n.º 3
0
        public async Task <IActionResult> Put([FromRoute] int id, [FromBody] BankCashReceiptViewModel viewModel)
        {
            try
            {
                VerifyUser();

                ValidateService.Validate(viewModel);
                BankCashReceiptModel model = Mapper.Map <BankCashReceiptModel>(viewModel);
                await Service.UpdateAsync(id, model);

                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 async Task <BankCashReceiptModel> GetTestData()
        {
            BankCashReceiptModel model = GetNewData();
            await Service.CreateAsync(model);

            return(await Service.ReadByIdAsync(model.Id));
        }
        public void Should_Success_Map_Garment_Finance_BankCashReceipt()
        {
            var mapper = new MapperConfiguration(configuration => configuration.AddProfile <BankCashReceiptProfile>()).CreateMapper();
            var model  = new BankCashReceiptModel();
            var vm     = mapper.Map <BankCashReceiptViewModel>(model);

            Assert.True(true);
        }
        public async Task Should_Success_Update_Data()
        {
            //Arrange
            var dbContext           = GetDbContext(GetCurrentAsyncMethod());
            var serviceProviderMock = GetServiceProvider();

            var httpClientService = new Mock <IHttpClientService>();

            serviceProviderMock
            .Setup(serviceProvider => serviceProvider.GetService(typeof(IHttpClientService)))
            .Returns(httpClientService.Object);

            serviceProviderMock
            .Setup(serviceProvider => serviceProvider.GetService(typeof(FinanceDbContext)))
            .Returns(dbContext);

            var service = new BankCashReceiptService(serviceProviderMock.Object);

            var model = await _dataUtil(service, GetCurrentAsyncMethod()).GetTestData();

            var model2 = await _dataUtil(service, GetCurrentAsyncMethod()).GetTestData();

            BankCashReceiptModel newModel2 = new BankCashReceiptModel();

            newModel2.Id = model2.Id;
            //Act
            var newModel = await service.ReadByIdAsync(model.Id);

            var Response1 = await service.UpdateAsync(newModel.Id, newModel);

            Assert.NotEqual(0, Response1);

            newModel2.Items = new List <BankCashReceiptItemModel> {
                model2.Items.First()
            };
            var Response = await service.UpdateAsync(model2.Id, newModel2);

            Assert.NotEqual(0, Response);

            BankCashReceiptItemModel newItem = new BankCashReceiptItemModel
            {
                BankCashReceiptId = 1,
                C1A = 1,
                C1B = 1,
                C2A = 1,
                C2B = 1,
                C2C = 1,
            };

            newModel2.Items.Add(newItem);
            var Response3 = await service.UpdateAsync(model2.Id, newModel2);

            Assert.NotEqual(0, Response);
        }
        public async Task <int> DeleteAsync(int id)
        {
            var existingModel = _dbContext.GarmentFinanceBankCashReceipts
                                .Include(d => d.Items)
                                .Single(x => x.Id == id && !x.IsDeleted);
            BankCashReceiptModel model = await ReadByIdAsync(id);

            foreach (var item in model.Items)
            {
                EntityExtension.FlagForDelete(item, _identityService.Username, UserAgent, true);
            }
            EntityExtension.FlagForDelete(model, _identityService.Username, UserAgent, true);
            _dbContext.GarmentFinanceBankCashReceipts.Update(model);

            return(await _dbContext.SaveChangesAsync());
        }
        public async Task <string> GenerateNo(BankCashReceiptModel model, int clientTimeZoneOffset)
        {
            DateTimeOffset Now  = model.ReceiptDate;
            string         Year = Now.ToOffset(new TimeSpan(clientTimeZoneOffset, 0, 0)).ToString("yy");

            string no      = $"{Year}/{model.NumberingCode}/";
            int    Padding = 5;

            var lastNo = await _dbContext.GarmentFinanceBankCashReceipts.Where(w => w.ReceiptNo.StartsWith(no) && !w.IsDeleted).OrderByDescending(o => o.CreatedUtc).FirstOrDefaultAsync();

            no = $"{no}";

            if (lastNo == null)
            {
                return(no + "1".PadLeft(Padding, '0'));
            }
            else
            {
                int lastNoNumber = int.Parse(lastNo.ReceiptNo.Replace(no, "")) + 1;
                return(no + lastNoNumber.ToString().PadLeft(Padding, '0'));
            }
        }
        public async Task <int> UpdateAsync(int id, BankCashReceiptModel model)
        {
            BankCashReceiptModel exist = _dbContext.GarmentFinanceBankCashReceipts
                                         .Include(d => d.Items)
                                         .Single(dispo => dispo.Id == id && !dispo.IsDeleted);

            exist.Remarks   = model.Remarks;
            exist.BuyerCode = model.BuyerCode;
            exist.BuyerId   = model.BuyerId;
            exist.BuyerName = model.BuyerName;

            foreach (var item in exist.Items)
            {
                BankCashReceiptItemModel itemModel = model.Items.FirstOrDefault(prop => prop.Id.Equals(item.Id));

                if (itemModel == null)
                {
                    EntityExtension.FlagForDelete(item, _identityService.Username, UserAgent, true);
                }
                else
                {
                    item.Amount     = itemModel.Amount;
                    item.Summary    = itemModel.Summary;
                    item.NoteNumber = itemModel.NoteNumber;
                    item.Remarks    = itemModel.Remarks;
                    EntityExtension.FlagForUpdate(item, _identityService.Username, UserAgent);
                }
            }

            foreach (var newItem in model.Items)
            {
                if (newItem.Id == 0)
                {
                    exist.Items.Add(newItem);
                    EntityExtension.FlagForCreate(newItem, _identityService.Username, UserAgent);
                }
            }

            decimal totalAmount = 0;

            foreach (var item in exist.Items)
            {
                if (model.CurrencyCode == "IDR")
                {
                    totalAmount += item.Summary;
                }
                else
                {
                    totalAmount += item.Amount;
                }
            }

            if (totalAmount != exist.Amount)
            {
                exist.Amount = totalAmount;
            }


            EntityExtension.FlagForUpdate(exist, _identityService.Username, UserAgent);

            return(await _dbContext.SaveChangesAsync());
        }