public PrqBillPaymentReference SetToBussinessObject(Prq_BillPaymentReference Entity)
        {
            PrqBillPaymentReference model = new PrqBillPaymentReference();

            model.PaymentID      = Entity.PaymentID;
            model.SupplierBillID = Entity.SupplierBillID;
            model.SupplierBillNo = Entity.SupplierBillRef;

            return(model);
        }
        public Prq_BillPaymentReference SetToModelObject(PrqBillPaymentReference model)
        {
            Prq_BillPaymentReference Entity = new Prq_BillPaymentReference();

            Entity.PaymentID       = model.PaymentID;// Convert.ToInt16(_context.Prq_BillPayment.DefaultIfEmpty().Max(m => m.PaymentID == null ? 0 : m.PaymentID));
            Entity.SupplierBillID  = model.SupplierBillID;
            Entity.SupplierBillRef = model.SupplierBillNo;
            Entity.RecordStatus    = model.RecordStatus;

            return(Entity);
        }
        public ValidationMsg Save(PrqBillPayment model, int userid)
        {
            _vmMsg = new ValidationMsg();
            try
            {
                using (var tx = new TransactionScope())
                {
                    using (_context)
                    {
                        model.SetBy = userid;
                        Prq_BillPayment tblBillPayment = SetToModelObject(model);
                        _context.Prq_BillPayment.Add(tblBillPayment);
                        _context.SaveChanges();

                        #region Save Detail Records

                        if (model.BillPaymentReferenceList != null)
                        {
                            foreach (
                                PrqBillPaymentReference objPrqBillPaymentReference in
                                model.BillPaymentReferenceList)
                            {
                                objPrqBillPaymentReference.PaymentID    = tblBillPayment.PaymentID;
                                objPrqBillPaymentReference.RecordStatus = "NCF";
                                Prq_BillPaymentReference tblPurchaseYearPeriod =
                                    SetToModelObject(objPrqBillPaymentReference);
                                _context.Prq_BillPaymentReference.Add(tblPurchaseYearPeriod);
                            }
                        }
                        _context.SaveChanges();

                        #endregion

                        tx.Complete();
                        PaymentID   = tblBillPayment.PaymentID;
                        _vmMsg.Type = Enums.MessageType.Success;
                        _vmMsg.Msg  = "Saved Successfully.";
                    }
                }
            }
            catch
            {
                _vmMsg.Type = Enums.MessageType.Error;
                _vmMsg.Msg  = "Failed to save.";
            }
            return(_vmMsg);
        }
        public ValidationMsg Update(PrqBillPayment model, int userid)
        {
            _vmMsg = new ValidationMsg();
            try
            {
                using (var tx = new TransactionScope())
                {
                    using (_context)
                    {
                        model.ModifiedBy = userid;
                        Prq_BillPayment CurrentEntity  = SetToModelObject(model);
                        var             OriginalEntity = _context.Prq_BillPayment.First(m => m.PaymentID == model.PaymentID);

                        OriginalEntity.PaymentDate       = CurrentEntity.PaymentDate;// Convert.ToDateTime(Convert.ToDateTime(CurrentEntity.PaymentDate).ToString("dd/MM/yyyy"));
                        OriginalEntity.SupplierID        = CurrentEntity.SupplierID;
                        OriginalEntity.SupplierAddressID = CurrentEntity.SupplierAddressID;
                        OriginalEntity.PaymentType       = CurrentEntity.PaymentType;
                        OriginalEntity.PaymentMethod     = CurrentEntity.PaymentMethod;
                        OriginalEntity.Currency          = CurrentEntity.Currency;
                        OriginalEntity.PaymentDoc        = CurrentEntity.PaymentDoc;
                        OriginalEntity.BillAmount        = CurrentEntity.BillAmount;
                        OriginalEntity.VatPercentage     = CurrentEntity.VatPercentage;
                        OriginalEntity.VatAmount         = CurrentEntity.VatAmount;
                        OriginalEntity.DeductAmount      = CurrentEntity.DeductAmount;
                        OriginalEntity.PaymentAmount     = CurrentEntity.PaymentAmount;
                        OriginalEntity.Remarks           = CurrentEntity.Remarks;

                        OriginalEntity.ModifiedBy = userid;
                        OriginalEntity.ModifiedOn = DateTime.Now;

                        #region Save Detail Records

                        if (model.BillPaymentReferenceList != null)
                        {
                            foreach (PrqBillPaymentReference objPrqBillPaymentReference in model.BillPaymentReferenceList)
                            {
                                if (objPrqBillPaymentReference.PaymentID == 0)
                                {
                                    objPrqBillPaymentReference.PaymentID    = model.PaymentID;
                                    objPrqBillPaymentReference.RecordStatus = "NCF";
                                    Prq_BillPaymentReference tblPurchaseYearPeriod = SetToModelObject(objPrqBillPaymentReference);
                                    _context.Prq_BillPaymentReference.Add(tblPurchaseYearPeriod);
                                }
                                else
                                {
                                    Prq_BillPaymentReference CurEntity = SetToModelObject(objPrqBillPaymentReference);
                                    var OrgEntity = _context.Prq_BillPaymentReference.First(m => m.PaymentID == objPrqBillPaymentReference.PaymentID && m.SupplierBillID == objPrqBillPaymentReference.SupplierBillID);

                                    OrgEntity.SupplierBillRef = CurEntity.SupplierBillRef;
                                }
                            }
                        }
                        _context.SaveChanges();

                        #endregion

                        tx.Complete();
                        _vmMsg.Type = Enums.MessageType.Update;
                        _vmMsg.Msg  = "Updated Successfully.";
                    }
                }
            }
            catch
            {
                _vmMsg.Type = Enums.MessageType.Error;
                _vmMsg.Msg  = "Failed to Update.";
            }
            return(_vmMsg);
        }