示例#1
0
        public async Task <int> Update(FormDto model)
        {
            int Updated = 0;

            using (var transaction = this.dbContext.Database.BeginTransaction())
            {
                try
                {
                    //validation
                    var dataExist = dbSet.FirstOrDefault(s => s.Id == model.Id);
                    if (dataExist == null)
                    {
                        throw new Exception("Data Not Found");
                    }
                    GarmentDispositionPurchase dataModel = mapper.Map <FormDto, GarmentDispositionPurchase>(model);
                    EntityExtension.FlagForUpdate(dataModel, identityService.Username, USER_AGENT);

                    var afterUpdateModel = dbContext.GarmentDispositionPurchases.Update(dataModel);
                    Updated = await dbContext.SaveChangesAsync();

                    transaction.Commit();
                }
                catch (Exception e)
                {
                    transaction.Rollback();
                    throw new Exception(e.Message);
                }
            }

            return(Updated);
        }
        public async Task <int> Post(FormDto model)
        {
            int Created = 0;

            using (var transaction = this.dbContext.Database.BeginTransaction())
            {
                try
                {
                    model.FixingVatAndIncomeTax();
                    GarmentDispositionPurchase dataModel = mapper.Map <FormDto, GarmentDispositionPurchase>(model);
                    EntityExtension.FlagForCreate(dataModel, identityService.Username, USER_AGENT);
                    var DispositionNo = await GenerateNo(identityService.TimezoneOffset);

                    dataModel.DispositionNo = DispositionNo;
                    dataModel.Position      = Enums.PurchasingGarmentExpeditionPosition.Purchasing;
                    dataModel.GarmentDispositionPurchaseItems.ForEach(s => {
                        EntityExtension.FlagForCreate(s, identityService.Username, USER_AGENT);

                        //var DispoDetail = this.dbContext.GarmentDispositionPurchaseDetailss.Where(a => a.GarmentDispositionPurchaseItemId == dataModel.Id).FirstOrDefault();
                        //var EPOItems1 = this.dbContext.GarmentExternalPurchaseOrderItems.Where(a => a.Id == DispoDetail.EPO_POId).FirstOrDefault();
                        //var EPO = this.dbContext.GarmentExternalPurchaseOrders.Where(a => a.Id == EPOItems1.GarmentEPOId).FirstOrDefault();

                        //s.VatId = EPO.VatId;
                        //s.VatRate = EPO.VatRate;
                        s.IsDispositionCreated = true;
                        s.GarmentDispositionPurchaseDetails.ForEach(t =>
                        {
                            if (t.QTYRemains <= 0)
                            {
                                var EPOItems = this.dbContext.GarmentExternalPurchaseOrderItems.Where(a => a.Id == t.EPO_POId).FirstOrDefault();
                                EPOItems.IsDispositionCreatedAll = true;
                                EntityExtension.FlagForUpdate(EPOItems, identityService.Username, USER_AGENT);
                                var afterUpdateModel = this.dbContext.GarmentExternalPurchaseOrderItems.Update(EPOItems);
                            }
                            EntityExtension.FlagForCreate(t, identityService.Username, USER_AGENT);
                        });
                    });

                    var afterAddModel = dbContext.GarmentDispositionPurchases.Add(dataModel);
                    Created = await dbContext.SaveChangesAsync();

                    transaction.Commit();
                }
                catch (Exception e)
                {
                    transaction.Rollback();
                    throw new Exception(e.Message);
                }
            }

            return(Created);
        }
示例#3
0
        public async Task <int> Update(FormEditDto model)
        {
            int Updated = 0;

            using (var transaction = this.dbContext.Database.BeginTransaction())
            {
                try
                {
                    //validation
                    var dataExist = this.dbContext.GarmentDispositionPurchases.AsNoTracking().Include(s => s.GarmentDispositionPurchaseItems).ThenInclude(s => s.GarmentDispositionPurchaseDetails).FirstOrDefault(s => s.Id == model.Id);
                    if (dataExist == null)
                    {
                        throw new Exception("Data Not Found");
                    }
                    GarmentDispositionPurchase dataModel = mapper.Map <FormEditDto, GarmentDispositionPurchase>(model);
                    //dataModel.GarmentDispositionPurchaseItems.ForEach(s => {
                    foreach (var s in dataModel.GarmentDispositionPurchaseItems)
                    {
                        //createNew Items
                        if (s.Id == 0)
                        {
                            EntityExtension.FlagForCreate(s, identityService.Username, USER_AGENT);
                            s.IsDispositionCreated         = true;
                            s.GarmentDispositionPurchaseId = dataModel.Id;
                            var afterCreateItem = this.dbContext.GarmentDispositionPurchaseItems.Add(s);
                            //s.GarmentDispositionPurchaseDetails.ForEach(t =>
                            foreach (var t in s.GarmentDispositionPurchaseDetails)
                            {
                                if (t.QTYRemains <= 0)
                                {
                                    var EPOItems1 = this.dbContext.GarmentExternalPurchaseOrderItems.AsNoTracking().Where(a => a.Id == t.EPO_POId).FirstOrDefault();
                                    EPOItems1.IsDispositionCreatedAll = true;
                                    EntityExtension.FlagForUpdate(EPOItems1, identityService.Username, USER_AGENT);
                                    var afterUpdateModel1 = this.dbContext.GarmentExternalPurchaseOrderItems.Update(EPOItems1);
                                    //dbContext.SaveChanges();
                                }

                                if (t.Id <= 0)
                                {
                                    EntityExtension.FlagForCreate(t, identityService.Username, USER_AGENT);
                                    t.GarmentDispositionPurchaseItemId = afterCreateItem.Entity.Id;
                                    var afterCreateDetail = this.dbContext.GarmentDispositionPurchaseDetailss.Add(t);
                                    //this.dbContext.SaveChanges();
                                }
                                else
                                {
                                    EntityExtension.FlagForUpdate(t, identityService.Username, USER_AGENT);
                                    var afterCreateDetail = this.dbContext.GarmentDispositionPurchaseDetailss.Update(t);
                                    //this.dbContext.SaveChanges();
                                }
                            }
                            this.dbContext.SaveChanges();
                        }
                        else//updatet data if items Exist
                        {
                            EntityExtension.FlagForUpdate(s, identityService.Username, USER_AGENT);
                            var afterCreateItem = this.dbContext.GarmentDispositionPurchaseItems.Update(s);
                            this.dbContext.SaveChanges();
                            //s.GarmentDispositionPurchaseDetails.ForEach(t =>
                            foreach (var t in s.GarmentDispositionPurchaseDetails)
                            {
                                if (t.QTYRemains <= 0)
                                {
                                    var EPOItems2 = this.dbContext.GarmentExternalPurchaseOrderItems.AsNoTracking().Where(a => a.Id == t.EPO_POId).FirstOrDefault();
                                    EPOItems2.IsDispositionCreatedAll = true;
                                    EntityExtension.FlagForUpdate(EPOItems2, identityService.Username, USER_AGENT);
                                    this.dbContext.GarmentExternalPurchaseOrderItems.Update(EPOItems2);
                                    dbContext.SaveChanges();
                                }
                                else
                                {
                                    var EPOItems3 = this.dbContext.GarmentExternalPurchaseOrderItems.AsNoTracking().Where(a => a.Id == t.EPO_POId).FirstOrDefault();
                                    EPOItems3.IsDispositionCreatedAll = false;
                                    EntityExtension.FlagForUpdate(EPOItems3, identityService.Username, USER_AGENT);
                                    this.dbContext.GarmentExternalPurchaseOrderItems.Update(EPOItems3);
                                    dbContext.SaveChanges();
                                }
                                if (t.Id == 0)
                                {
                                    EntityExtension.FlagForCreate(t, identityService.Username, USER_AGENT);
                                    t.GarmentDispositionPurchaseItemId = afterCreateItem.Entity.Id;
                                    var afterCreateDetail = this.dbContext.GarmentDispositionPurchaseDetailss.Add(t);
                                    this.dbContext.SaveChanges();
                                }
                                else
                                {
                                    EntityExtension.FlagForUpdate(t, identityService.Username, USER_AGENT);
                                    var afterCreateDetail = this.dbContext.GarmentDispositionPurchaseDetailss.Update(t);
                                    this.dbContext.SaveChanges();
                                }
                                //});
                            }
                        }

                        //deleted detail when not exist anymore
                        var detailsPerItems    = dataExist.GarmentDispositionPurchaseItems.SelectMany(j => j.GarmentDispositionPurchaseDetails).Where(j => j.GarmentDispositionPurchaseItemId == s.Id);
                        var detailsFormPerItem = s.GarmentDispositionPurchaseDetails.Select(j => j.Id).ToList();
                        var deletedDetails     = detailsPerItems.Where(j => !detailsFormPerItem.Contains(j.Id)).ToList();

                        //deletedDetails.ForEach(j =>
                        foreach (var j in deletedDetails)
                        {
                            var EPOItems = this.dbContext.GarmentExternalPurchaseOrderItems.AsNoTracking().Where(a => a.Id == j.EPO_POId).FirstOrDefault();
                            EPOItems.IsDispositionCreatedAll = false;
                            EntityExtension.FlagForUpdate(EPOItems, identityService.Username, USER_AGENT);
                            this.dbContext.GarmentExternalPurchaseOrderItems.Update(EPOItems);
                            dbContext.SaveChanges();

                            EntityExtension.FlagForDelete(j, identityService.Username, USER_AGENT);
                            this.dbContext.GarmentDispositionPurchaseDetailss.Update(j);
                            dbContext.SaveChanges();

                            //});
                        }
                        //});
                    }
                    //deleted items
                    var dataformItems = dataModel.GarmentDispositionPurchaseItems.Select(t => t.Id).ToList();
                    var deletedItems  = dataExist.GarmentDispositionPurchaseItems.Where(s => !dataformItems.Contains(s.Id)).ToList();
                    //deletedItems.ForEach(t =>
                    foreach (var t in deletedItems)
                    {
                        EntityExtension.FlagForDelete(t, identityService.Username, USER_AGENT);
                        var afterDeletedItems = this.dbContext.GarmentDispositionPurchaseItems.Update(t);
                        dbContext.SaveChanges();


                        //});
                    }
                    var modelParentUpdate = this.dbContext.GarmentDispositionPurchases.FirstOrDefault(t => t.Id == dataModel.Id);
                    modelParentUpdate.Amount              = dataModel.Amount;
                    modelParentUpdate.Bank                = dataModel.Bank;
                    modelParentUpdate.Category            = dataModel.Category;
                    modelParentUpdate.ConfirmationOrderNo = dataModel.ConfirmationOrderNo;
                    modelParentUpdate.CurrencyDate        = dataModel.CurrencyDate;
                    modelParentUpdate.CurrencyId          = dataModel.CurrencyId;
                    modelParentUpdate.CurrencyName        = dataModel.CurrencyName;
                    modelParentUpdate.Description         = dataModel.Description;
                    modelParentUpdate.DispositionNo       = dataModel.DispositionNo;
                    modelParentUpdate.Dpp               = dataModel.Dpp;
                    modelParentUpdate.DueDate           = dataModel.DueDate;
                    modelParentUpdate.IncomeTax         = dataModel.IncomeTax;
                    modelParentUpdate.InvoiceProformaNo = dataModel.InvoiceProformaNo;
                    modelParentUpdate.OtherCost         = dataModel.OtherCost;
                    modelParentUpdate.PaymentType       = dataModel.PaymentType;
                    modelParentUpdate.SupplierCode      = dataModel.SupplierCode;
                    modelParentUpdate.SupplierId        = dataModel.SupplierId;
                    modelParentUpdate.SupplierIsImport  = dataModel.SupplierIsImport;
                    modelParentUpdate.SupplierName      = dataModel.SupplierName;
                    modelParentUpdate.VAT               = dataModel.VAT;

                    var afterUpdateModel = dbContext.GarmentDispositionPurchases.Update(modelParentUpdate);
                    Updated = dbContext.SaveChanges();

                    transaction.Commit();
                }
                catch (Exception e)
                {
                    transaction.Rollback();
                    throw new Exception(e.Message);
                }
            }

            return(Updated);
        }