public ActionResult Save(LoanReturnIssue dataSet)
        {
            decimal RemainingQty   = 0;
            decimal ReturnQuantity = 0;
            decimal TotalReturnQty = 0;

            try
            {
                if (dataSet.RequestID == 0)
                {
                    INV_TransRequest ob = new INV_TransRequest();
                    if (dataSet.RequestType == "RLRR")
                    {
                        ob.RequestNo = DalCommon.GetPreDefineNextCodeByUrl("LoanReturnRequest/LoanReturnIssue");
                    }
                    ob.RequestDate        = DalCommon.SetDate(dataSet.RequestDate);
                    ob.RequestType        = dataSet.RequestType;
                    ob.Remarks            = dataSet.Remarks;
                    ob.RequestFrom        = dataSet.RequestFrom.ToString();
                    ob.RequestTo          = dataSet.RequestTo;
                    ob.ToSource           = dataSet.ToSource;
                    ob.ExpectetReturnTime = Convert.ToByte(dataSet.ExpectetReturnTime);
                    ob.RecordStatus       = "NCF";
                    ob.SetOn = DateTime.Now;
                    if (dataSet.ReturnMethod == "Exchange Other Item")
                    {
                        ob.ReturnMethod = "EOI";
                    }
                    else if (dataSet.ReturnMethod == "Doller to Doller")
                    {
                        ob.ReturnMethod = "DTD";
                    }
                    else if (dataSet.ReturnMethod == "Exchange Same Item")
                    {
                        ob.ReturnMethod = "ESI";
                    }
                    else
                    {
                        ob.ReturnMethod = dataSet.ReturnMethod;
                    }

                    ob.SetBy      = Convert.ToInt32(Session["UserID"]);
                    ob.ModifiedBy = Convert.ToInt32(Session["UserID"]);
                    ob.ModifiedOn = DateTime.Now;
                    ob.IPAddress  = GetIPAddress.LocalIPAddress();
                    repository.InvTransRequestRepository.Insert(ob);

                    INV_TransRequestRef obRef = new INV_TransRequestRef();
                    obRef.TransRequestRefNo = ob.RequestNo;
                    obRef.RequestID         = ob.RequestID;
                    obRef.RefRequestID      = Convert.ToInt64(dataSet.RefRequestID);
                    obRef.Remark            = dataSet.Remarks;
                    obRef.SetOn             = DateTime.Now;
                    obRef.SetBy             = Convert.ToInt32(Session["UserID"]);
                    obRef.ModifiedBy        = Convert.ToInt32(Session["UserID"]);
                    obRef.ModifiedOn        = DateTime.Now;
                    obRef.IPAddress         = GetIPAddress.LocalIPAddress();
                    repository.InvTransRequestRefRepository.Insert(obRef);

                    if (dataSet.lstLoanReturnIssueItems != null)
                    {
                        foreach (var item in dataSet.lstLoanReturnIssueItems)
                        {
                            TotalReturnQty = (item.RemainingQty * item.ReturnRate);

                            RemainingQty   = item.RemainingQty == null ? 0 : Convert.ToDecimal(item.RemainingQty);
                            ReturnQuantity = item.ReturnQuantity == null ? 0 : Convert.ToDecimal(item.ReturnQuantity);
                            INV_TransRequestItem obReqItem = new INV_TransRequestItem();
                            obReqItem.RequestID         = ob.RequestID;
                            obReqItem.TransRequestRefID = obRef.TransRequestRefID;


                            obReqItem.RefItemID = Convert.ToInt32(item.ItemID);
                            if (item.ReturnMethodID == "ESI")
                            {
                                obReqItem.ItemID = Convert.ToInt32(item.ItemID);
                            }

                            obReqItem.ReferenceQty  = Convert.ToDecimal(item.ReferenceQty);
                            obReqItem.ReferenceUnit = Convert.ToByte(item.ReferenceUnit);
                            if (item.ReceiveCurrencyID != null)
                            {
                                obReqItem.ReferenceCurrency = Convert.ToByte(item.ReceiveCurrencyID);
                            }
                            obReqItem.ReferenceRate  = Convert.ToDecimal(item.ReceiveRate);
                            obReqItem.ReferenceValue = Convert.ToDecimal(item.ReceiveValue);
                            obReqItem.ReturnMethod   = item.ReturnMethodID == null ? "" : item.ReturnMethodID;
                            if (item.ReturnUnitID != null)
                            {
                                obReqItem.ReturnUnit = Convert.ToByte(item.ReturnUnitID);
                            }
                            if (item.ReturnItemID != null)
                            {
                                obReqItem.ItemID = Convert.ToInt32(item.ReturnItemID);
                            }
                            if (item.ReturnCurrencyID != null)
                            {
                                obReqItem.ReturnCurrency = Convert.ToByte(item.ReturnCurrencyID);
                            }
                            if (item.ReturnExchangeRate != null)
                            {
                                obReqItem.ExchangeRate = Convert.ToDecimal(item.ReturnExchangeRate);
                            }
                            if (item.ReturnRate != null)
                            {
                                obReqItem.ReturnRate = Convert.ToDecimal(item.ReturnRate);
                            }
                            obReqItem.RefItemDueQty = 0;                                      //Math.Round(item.RemainingQty - ((item.ReturnQuantity * item.RemainingQty) / (TotalReturnQty == 0 ? 1 : TotalReturnQty)),2);
                            obReqItem.ReturnValue   = Convert.ToDecimal(item.ReturnQuantity); //Math.Round(((item.ReturnQuantity * item.RemainingQty) / (TotalReturnQty == 0 ? 1 : TotalReturnQty)),2);
                            obReqItem.SetBy         = Convert.ToInt32(Session["UserID"]);
                            obReqItem.SetOn         = DateTime.Now;
                            obReqItem.ModifiedBy    = Convert.ToInt32(Session["UserID"]);
                            obReqItem.ModifiedOn    = DateTime.Now;
                            obReqItem.IPAddress     = GetIPAddress.LocalIPAddress();
                            repository.InvTransRequestItemRepository.Insert(obReqItem);
                        }
                    }
                    try
                    {
                        repository.Save();
                        _vmMsg.ReturnCode = ob.RequestNo;
                        _vmMsg.ReturnId   = ob.RequestID;
                        _vmMsg.Type       = Enums.MessageType.Success;
                        _vmMsg.Msg        = "Saved Successfully.";
                    }
                    catch (Exception ex)
                    {
                        _vmMsg.Type = Enums.MessageType.Error;
                        _vmMsg.Msg  = "Saved Faild.";
                    }
                }
                else
                {  // Update
                    INV_TransRequest ob = repository.InvTransRequestRepository.GetByID(dataSet.RequestID);
                    ob.RequestDate = DalCommon.SetDate(dataSet.RequestDate);
                    if (dataSet.ReturnMethod == "Exchange Other Item")
                    {
                        ob.ReturnMethod = "EOI";
                    }
                    else if (dataSet.ReturnMethod == "Doller to Doller")
                    {
                        ob.ReturnMethod = "DTD";
                    }
                    else if (dataSet.ReturnMethod == "Exchange Same Item")
                    {
                        ob.ReturnMethod = "ESI";
                    }
                    else
                    {
                        ob.ReturnMethod = dataSet.ReturnMethod;
                    }
                    ob.RequestType        = dataSet.RequestType;
                    ob.RequestFrom        = dataSet.RequestFrom.ToString();
                    ob.RequestTo          = dataSet.RequestTo;
                    ob.ToSource           = dataSet.ToSource;
                    ob.ExpectetReturnTime = Convert.ToByte(dataSet.ExpectetReturnTime);
                    ob.Remarks            = dataSet.Remarks;
                    ob.ModifiedOn         = DateTime.Now;
                    ob.ModifiedBy         = Convert.ToInt32(Session["UserID"]);
                    ob.IPAddress          = GetIPAddress.LocalIPAddress();
                    repository.InvTransRequestRepository.Update(ob);

                    INV_TransRequestRef obRef = repository.InvTransRequestRefRepository.Get(filter: o => o.RequestID == dataSet.RequestID).FirstOrDefault();
                    obRef.Remark     = dataSet.Remarks;
                    obRef.ModifiedBy = Convert.ToInt32(Session["UserID"]);
                    obRef.ModifiedOn = DateTime.Now;
                    obRef.IPAddress  = GetIPAddress.LocalIPAddress();
                    repository.InvTransRequestRefRepository.Update(obRef);
                    if (dataSet.lstLoanReturnIssueItems != null)
                    {
                        foreach (var item in dataSet.lstLoanReturnIssueItems)
                        {
                            TotalReturnQty = (item.RemainingQty * item.ReturnRate);
                            RemainingQty   = item.RemainingQty == null ? 0 : Convert.ToDecimal(item.RemainingQty);
                            ReturnQuantity = item.ReturnQuantity == null ? 0 : Convert.ToDecimal(item.ReturnQuantity);

                            INV_TransRequestItem obReqItem = repository.InvTransRequestItemRepository.GetByID(item.TransRequestItemID);

                            //obReqItem.TransRequestRefID = obRef.TransRequestRefID;
                            obReqItem.RefItemID     = Convert.ToInt32(item.ItemID);
                            obReqItem.ReferenceQty  = Convert.ToDecimal(item.ReferenceQty);
                            obReqItem.ReferenceUnit = Convert.ToByte(item.ReferenceUnit);
                            if (item.ReceiveCurrencyID != null)
                            {
                                obReqItem.ReferenceCurrency = Convert.ToByte(item.ReceiveCurrencyID);
                            }
                            if (item.ReturnMethodID == "ESI")
                            {
                                obReqItem.ItemID = Convert.ToInt32(item.ItemID);
                            }

                            obReqItem.ReferenceRate  = Convert.ToDecimal(item.ReceiveRate);
                            obReqItem.ReferenceValue = Convert.ToDecimal(item.ReceiveValue);
                            obReqItem.ReturnMethod   = item.ReturnMethodID == null ? "" : item.ReturnMethodID;
                            if (item.ReturnUnitID != null)
                            {
                                obReqItem.ReturnUnit = Convert.ToByte(item.ReturnUnitID);
                            }
                            if (item.ReturnItemID != null)
                            {
                                obReqItem.ItemID = Convert.ToInt32(item.ReturnItemID);
                            }
                            if (item.ReturnCurrencyID != null)
                            {
                                obReqItem.ReturnCurrency = Convert.ToByte(item.ReturnCurrencyID);
                            }
                            if (item.ReturnExchangeRate != null)
                            {
                                obReqItem.ExchangeRate = Convert.ToDecimal(item.ReturnExchangeRate);
                            }
                            if (item.ReturnRate != null)
                            {
                                obReqItem.ReturnRate = Convert.ToDecimal(item.ReturnRate);
                            }
                            obReqItem.RefItemDueQty = 0;                                      //Math.Round((item.RemainingQty + (obReqItem.ReturnValue == null?0 : Convert.ToDecimal(obReqItem.ReturnValue))) - ((item.ReturnQuantity * item.RemainingQty) / (TotalReturnQty == 0 ? 1 : TotalReturnQty)), 2);
                            obReqItem.ReturnValue   = Convert.ToDecimal(item.ReturnQuantity); //Math.Round(((item.ReturnQuantity * item.RemainingQty) / (TotalReturnQty == 0 ? 1 : TotalReturnQty)), 2);
                            obReqItem.SetBy         = Convert.ToInt32(Session["UserID"]);
                            obReqItem.SetOn         = DateTime.Now;
                            obReqItem.ModifiedBy    = Convert.ToInt32(Session["UserID"]);
                            obReqItem.ModifiedOn    = DateTime.Now;
                            obReqItem.IPAddress     = GetIPAddress.LocalIPAddress();
                            repository.InvTransRequestItemRepository.Update(obReqItem);
                        }
                    }

                    try
                    {
                        repository.Save();
                        _vmMsg.ReturnCode = ob.RequestNo;
                        _vmMsg.ReturnId   = dataSet.RequestID;
                        _vmMsg.Type       = Enums.MessageType.Success;
                        _vmMsg.Msg        = "Updated Successfully.";
                    }
                    catch (DbEntityValidationException e)
                    {
                        StringBuilder sb = new StringBuilder();
                        foreach (var eve in e.EntityValidationErrors)
                        {
                            sb.AppendLine(string.Format("Entity of type \"{0}\" in state \"{1}\" has the following validation errors:",
                                                        eve.Entry.Entity.GetType().Name,
                                                        eve.Entry.State));
                            foreach (var ve in eve.ValidationErrors)
                            {
                                sb.AppendLine(string.Format("- Property: \"{0}\", Error: \"{1}\"",
                                                            ve.PropertyName,
                                                            ve.ErrorMessage));
                            }
                        }

                        _vmMsg.Type = Enums.MessageType.Error;
                        _vmMsg.Msg  = "Saved Faild.";
                        throw new DbEntityValidationException(sb.ToString(), e);
                    }
                }
            }
            catch (DbEntityValidationException e)
            {
                StringBuilder sb = new StringBuilder();
                foreach (var eve in e.EntityValidationErrors)
                {
                    sb.AppendLine(string.Format("Entity of type \"{0}\" in state \"{1}\" has the following validation errors:",
                                                eve.Entry.Entity.GetType().Name,
                                                eve.Entry.State));
                    foreach (var ve in eve.ValidationErrors)
                    {
                        sb.AppendLine(string.Format("- Property: \"{0}\", Error: \"{1}\"",
                                                    ve.PropertyName,
                                                    ve.ErrorMessage));
                    }
                }

                _vmMsg.Type = Enums.MessageType.Error;
                _vmMsg.Msg  = "Saved Faild.";
                throw new DbEntityValidationException(sb.ToString(), e);
            }
            return(Json(new { msg = _vmMsg }));
        }
Esempio n. 2
0
        public ActionResult Save(TransRequest dataSet)
        {
            try
            {
                //######################################
                // Session["UserID"] = 1;
                if (dataSet.RequestID == 0)
                {
                    INV_TransRequest ob = new INV_TransRequest();
                    if (dataSet.RequestType == "LNIR")
                    {
                        ob.RequestNo  = DalCommon.GetPreDefineNextCodeByUrl("LoanRequest/LoanIssueRequest");
                        ob.FromSource = dataSet.ToSource;
                        //ob.ToSource = "STR";
                    }
                    else if (dataSet.RequestType == "LNRR")
                    {
                        ob.RequestNo = DalCommon.GetPreDefineNextCodeByUrl("LoanRequest/Index");
                        //ob.FromSource = "STR";
                        ob.ToSource = dataSet.ToSource;
                    }
                    else
                    {
                    }

                    ob.RequestDate        = DalCommon.SetDate(dataSet.RequestDate);
                    ob.RequestType        = dataSet.RequestType;
                    ob.RequestFrom        = dataSet.RequestFrom.ToString();
                    ob.RequestTo          = dataSet.RequestTo.ToString();
                    ob.ReturnMethod       = dataSet.ReturnMethod;
                    ob.ExpectetReturnTime = Convert.ToByte(dataSet.ExpectetReturnTime);
                    ob.RecordStatus       = "NCF";
                    ob.SetOn      = DateTime.Now;
                    ob.SetBy      = Convert.ToInt32(Session["UserID"]);
                    ob.ModifiedBy = Convert.ToInt32(Session["UserID"]);
                    ob.ModifiedOn = DateTime.Now;

                    ob.IPAddress = GetIPAddress.LocalIPAddress();
                    repository.InvTransRequestRepository.Insert(ob);

                    INV_TransRequestRef obRef = new INV_TransRequestRef();
                    obRef.TransRequestRefNo = ob.RequestNo;
                    obRef.RequestID         = ob.RequestID;
                    //obRef.RefRequestID = ob.RequestID;
                    obRef.ReturnMethod = dataSet.ReturnMethod;
                    obRef.SetOn        = DateTime.Now;
                    obRef.SetBy        = Convert.ToInt32(Session["UserID"]);
                    obRef.ModifiedBy   = Convert.ToInt32(Session["UserID"]);
                    obRef.ModifiedOn   = DateTime.Now;
                    obRef.IPAddress    = GetIPAddress.LocalIPAddress();
                    repository.InvTransRequestRefRepository.Insert(obRef);

                    if (dataSet.ChemicalSelectedList != null)
                    {
                        foreach (var item in dataSet.ChemicalSelectedList)
                        {
                            INV_TransRequestItem obReqItem = new INV_TransRequestItem();
                            obReqItem.RequestID         = ob.RequestID;
                            obReqItem.ReturnMethod      = dataSet.ReturnMethod;
                            obReqItem.TransRequestRefID = obRef.TransRequestRefID;
                            if (item.ItemID > 0)
                            {
                                obReqItem.ItemID = Convert.ToInt32(item.ItemID);
                            }
                            if (Convert.ToByte(item.PackSize) > 0)
                            {
                                obReqItem.PackSize = Convert.ToByte(item.PackSize);
                            }

                            obReqItem.PackQty = Convert.ToInt32(item.PackQty);
                            if (Convert.ToByte(item.SizeUnit) > 0)
                            {
                                obReqItem.SizeUnit = Convert.ToByte(item.SizeUnit);
                            }
                            if (obReqItem.PackQty != null && item.PackSize != null)
                            {
                                obReqItem.TransQty = obReqItem.PackQty * ((Convert.ToByte(repository.SysSizeRepository.GetByID(Convert.ToInt32(item.PackSize)).SizeName)));
                            }
                            if (Convert.ToByte(item.ReferenceUnit) > 0)
                            {
                                obReqItem.TransUnit = Convert.ToByte(item.ReferenceUnit);
                            }

                            if (item.RefSupplierID > 0)
                            {
                                obReqItem.RefSupplierID = Convert.ToInt32(item.RefSupplierID);
                            }

                            obReqItem.SetBy      = Convert.ToInt32(Session["UserID"]);
                            obReqItem.SetOn      = DateTime.Now;
                            obReqItem.ModifiedBy = Convert.ToInt32(Session["UserID"]);
                            obReqItem.ModifiedOn = DateTime.Now;
                            obReqItem.IPAddress  = GetIPAddress.LocalIPAddress();
                            repository.InvTransRequestItemRepository.Insert(obReqItem);
                        }
                    }
                    try
                    {
                        repository.Save();
                        _vmMsg.ReturnCode = ob.RequestNo;
                        _vmMsg.ReturnId   = repository.InvTransRequestRepository.Get().Last().RequestID;
                        _vmMsg.Type       = Enums.MessageType.Success;
                        _vmMsg.Msg        = "Saved Successfully.";
                    }
                    catch (Exception ex)
                    {
                        _vmMsg.Type = Enums.MessageType.Error;
                        _vmMsg.Msg  = "Saved Faild.";
                    }
                }
                else    // Update
                {
                    INV_TransRequest ob = repository.InvTransRequestRepository.GetByID(dataSet.RequestID);
                    ob.RequestDate        = DalCommon.SetDate(dataSet.RequestDate);
                    ob.RequestFrom        = dataSet.RequestFrom.ToString();
                    ob.RequestTo          = dataSet.RequestTo.ToString();
                    ob.ReturnMethod       = dataSet.ReturnMethod;
                    ob.ExpectetReturnTime = Convert.ToByte(dataSet.ExpectetReturnTime);
                    ob.ModifiedOn         = DateTime.Now;
                    ob.ModifiedBy         = Convert.ToInt32(Session["UserID"]);
                    ob.FromSource         = "STR";
                    if (ob.RequestType == "LNIR")
                    {
                        ob.FromSource = dataSet.ToSource;
                    }
                    else if (ob.RequestType == "LNRR")
                    {
                        ob.ToSource = dataSet.ToSource;
                    }
                    else
                    {
                    }
                    //ob.ToSource = dataSet.ToSource;
                    ob.IPAddress = GetIPAddress.LocalIPAddress();
                    repository.InvTransRequestRepository.Update(ob);

                    INV_TransRequestRef obRef = repository.InvTransRequestRefRepository.Get(filter: o => o.RequestID == dataSet.RequestID).FirstOrDefault();
                    obRef.ReturnMethod = dataSet.ReturnMethod;
                    obRef.ModifiedBy   = Convert.ToInt32(Session["UserID"]);
                    obRef.ModifiedOn   = DateTime.Now;
                    obRef.IPAddress    = GetIPAddress.LocalIPAddress();
                    repository.InvTransRequestRefRepository.Update(obRef);
                    if (dataSet.ChemicalSelectedList != null)
                    {
                        foreach (var item in dataSet.ChemicalSelectedList)
                        {
                            if (item.TransRequestItemID == 0)
                            {
                                INV_TransRequestItem obReqItem = new INV_TransRequestItem();
                                obReqItem.RequestID         = ob.RequestID;
                                obReqItem.TransRequestRefID = obRef.TransRequestRefID;
                                obReqItem.ReturnMethod      = dataSet.ReturnMethod;
                                if (Convert.ToInt32(item.ItemID) > 0)
                                {
                                    obReqItem.ItemID = Convert.ToInt32(item.ItemID);
                                }
                                if (Convert.ToByte(item.PackSize) > 0)
                                {
                                    obReqItem.PackSize = Convert.ToByte(item.PackSize);
                                }
                                else
                                {
                                    obReqItem.PackSize = 0;
                                }
                                obReqItem.PackQty = Convert.ToInt32(item.PackQty);
                                if (Convert.ToByte(item.SizeUnit) > 0)
                                {
                                    obReqItem.SizeUnit = Convert.ToByte(item.SizeUnit);
                                }

                                if (obReqItem.PackQty > 0 && item.PackSize != null)
                                {
                                    obReqItem.TransQty = obReqItem.PackQty * ((Convert.ToByte(repository.SysSizeRepository.GetByID(Convert.ToInt32(item.PackSize)).SizeName)));//Convert.ToDecimal(item.ReferenceQty);
                                }
                                else
                                {
                                    obReqItem.TransQty = Convert.ToDecimal(item.ReferenceQty);
                                }

                                if (Convert.ToByte(item.ReferenceUnit) > 0)
                                {
                                    obReqItem.TransUnit = Convert.ToByte(item.ReferenceUnit);
                                }
                                if (Convert.ToInt32(item.RefSupplierID) > 0)
                                {
                                    obReqItem.RefSupplierID = Convert.ToInt32(item.RefSupplierID);
                                }
                                obReqItem.SetBy      = Convert.ToInt32(Session["UserID"]);
                                obReqItem.SetOn      = DateTime.Now;
                                obReqItem.ModifiedBy = Convert.ToInt32(Session["UserID"]);
                                obReqItem.ModifiedOn = DateTime.Now;
                                obReqItem.IPAddress  = GetIPAddress.LocalIPAddress();
                                repository.InvTransRequestItemRepository.Insert(obReqItem);
                            }
                            else
                            {
                                INV_TransRequestItem obReqItem = repository.InvTransRequestItemRepository.GetByID(item.TransRequestItemID);
                                if (Convert.ToInt32(item.ItemID) > 0)
                                {
                                    obReqItem.ItemID = Convert.ToInt32(item.ItemID);
                                }
                                if (Convert.ToByte(item.PackSize) > 0)
                                {
                                    obReqItem.PackSize = Convert.ToByte(item.PackSize);
                                }
                                else
                                {
                                    obReqItem.PackSize = 0;
                                }
                                obReqItem.PackQty      = Convert.ToInt32(item.PackQty);
                                obReqItem.ReturnMethod = dataSet.ReturnMethod;

                                if (Convert.ToByte(item.SizeUnit) > 0)
                                {
                                    obReqItem.SizeUnit = Convert.ToByte(item.SizeUnit);
                                }
                                if (obReqItem.PackQty > 0 && item.PackSize != null)
                                {
                                    obReqItem.TransQty = obReqItem.PackQty * (Convert.ToByte(repository.SysSizeRepository.GetByID(Convert.ToInt32(item.PackSize)).SizeName));    //Convert.ToDecimal(item.ReferenceQty);
                                }
                                else
                                {
                                    obReqItem.TransQty = Convert.ToDecimal(item.ReferenceQty);
                                }
                                if (Convert.ToByte(item.ReferenceUnit) > 0)
                                {
                                    obReqItem.TransUnit = Convert.ToByte(item.ReferenceUnit);
                                }

                                if (Convert.ToInt32(item.RefSupplierID) > 0)
                                {
                                    obReqItem.RefSupplierID = Convert.ToInt32(item.RefSupplierID);
                                }
                                obReqItem.ModifiedBy = Convert.ToInt32(Session["UserID"]);
                                obReqItem.ModifiedOn = DateTime.Now;
                                obReqItem.IPAddress  = GetIPAddress.LocalIPAddress();
                                repository.InvTransRequestItemRepository.Update(obReqItem);
                            }
                        }
                    }

                    try
                    {
                        repository.Save();
                        _vmMsg.ReturnCode = ob.RequestNo;
                        _vmMsg.ReturnId   = dataSet.RequestID;
                        _vmMsg.Type       = Enums.MessageType.Success;
                        _vmMsg.Msg        = "Updated Successfully.";
                    }
                    catch (Exception x)
                    {
                        _vmMsg.Type = Enums.MessageType.Error;
                        _vmMsg.Msg  = "Saved Faild.";
                    }
                }
            }
            catch (DbEntityValidationException e)
            {
                StringBuilder sb = new StringBuilder();
                foreach (var eve in e.EntityValidationErrors)
                {
                    sb.AppendLine(string.Format("Entity of type \"{0}\" in state \"{1}\" has the following validation errors:",
                                                eve.Entry.Entity.GetType().Name,
                                                eve.Entry.State));
                    foreach (var ve in eve.ValidationErrors)
                    {
                        sb.AppendLine(string.Format("- Property: \"{0}\", Error: \"{1}\"",
                                                    ve.PropertyName,
                                                    ve.ErrorMessage));
                    }
                }
                throw new DbEntityValidationException(sb.ToString(), e);
            }
            return(Json(new { msg = _vmMsg }));
        }