Ejemplo n.º 1
0
        public async Task <int> UpdateAsync(int id, SalesReceiptModel model)
        {
            using (var transaction = _DbContext.Database.BeginTransaction())
            {
                try
                {
                    if (model.SalesReceiptDetails != null)
                    {
                        List <int> detailIds = await _DetailDbSet.Where(w => w.SalesReceiptId.Equals(id) && !w.IsDeleted).Select(s => s.Id).ToListAsync();

                        foreach (var itemId in detailIds)
                        {
                            SalesReceiptDetailModel data = model.SalesReceiptDetails.FirstOrDefault(prop => prop.Id.Equals(itemId));
                            if (data == null)
                            {
                                var detailModel = await ReadByIdAsync(itemId);

                                EntityExtension.FlagForDelete(detailModel, _IdentityService.Username, _UserAgent, true);
                            }
                            else
                            {
                                EntityExtension.FlagForUpdate(data, _IdentityService.Username, _UserAgent);
                            }
                        }

                        foreach (SalesReceiptDetailModel item in model.SalesReceiptDetails)
                        {
                            if (item.Id == 0)
                            {
                                EntityExtension.FlagForCreate(item, _IdentityService.Username, _UserAgent);
                            }
                        }
                    }

                    EntityExtension.FlagForUpdate(model, _IdentityService.Username, _UserAgent);
                    _DbSet.Update(model);

                    foreach (var item in model.SalesReceiptDetails)
                    {
                        var updateModel = new SalesReceiptUpdateModel()
                        {
                            TotalPaid = item.Paid,
                            IsPaidOff = item.IsPaidOff,
                        };

                        UpdateToSalesInvoice(item.SalesInvoiceId, updateModel);
                    }
                }
                catch (Exception e)
                {
                    transaction.Rollback();
                    throw new Exception(e.Message);
                }
            }

            return(await _DbContext.SaveChangesAsync());
        }
Ejemplo n.º 2
0
        public void Mapping_With_AutoMapper_Profiles()
        {
            var configuration = new MapperConfiguration(cfg =>
            {
                cfg.AddProfile <SalesReceiptProfile>();
            });
            var mapper = configuration.CreateMapper();

            SalesReceiptViewModel salesReceiptViewModel = new SalesReceiptViewModel {
                Id = 1
            };
            SalesReceiptModel salesReceiptModel = mapper.Map <SalesReceiptModel>(salesReceiptViewModel);

            Assert.Equal(salesReceiptViewModel.Id, salesReceiptModel.Id);

            SalesReceiptDetailViewModel salesReceiptDetailViewModel = new SalesReceiptDetailViewModel {
                Id = 1
            };
            SalesReceiptDetailModel salesReceiptDetailModel = mapper.Map <SalesReceiptDetailModel>(salesReceiptDetailViewModel);

            Assert.Equal(salesReceiptDetailViewModel.Id, salesReceiptDetailModel.Id);
        }
        public override async void UpdateAsync(long id, SalesReceiptModel model)
        {
            try
            {
                if (model.SalesReceiptDetails != null)
                {
                    HashSet <long> detailIds = salesReceiptDetailLogic.GetIds(id);
                    foreach (var itemId in detailIds)
                    {
                        SalesReceiptDetailModel data = model.SalesReceiptDetails.FirstOrDefault(prop => prop.Id.Equals(itemId));
                        if (data == null)
                        {
                            await salesReceiptDetailLogic.DeleteAsync(itemId);
                        }
                        else
                        {
                            salesReceiptDetailLogic.UpdateAsync(itemId, data);
                        }
                    }

                    foreach (SalesReceiptDetailModel item in model.SalesReceiptDetails)
                    {
                        if (item.Id == 0)
                        {
                            salesReceiptDetailLogic.Create(item);
                        }
                    }
                }

                EntityExtension.FlagForUpdate(model, IdentityService.Username, "sales-service");
                DbSet.Update(model);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }