[Authorize(Roles = SD.Role_Admin_Modify + "," + SD.Role_Admin_View + "," + SD.Role_Employee_Modify)]// Add authorization Level

        public IActionResult Upsert(VendorContactVM vendorcontactVM)
        {
            if (ModelState.IsValid)
            {
                // to pass parameters to sql procedrues
                var parameter = new DynamicParameters();
                parameter.Add("@Name", vendorcontactVM.VendorContact.Name);
                parameter.Add("@Email", vendorcontactVM.VendorContact.Email);
                parameter.Add("@Branch", vendorcontactVM.VendorContact.Branch);
                parameter.Add("@Remark", vendorcontactVM.VendorContact.Remark);
                parameter.Add("@VendorId", vendorcontactVM.VendorContact.VendorId);



                if (vendorcontactVM.VendorContact.Id == 0)                        // create case whenever no ID posted
                {
                    _unitOfWork.VendorContact.Add(vendorcontactVM.VendorContact); // to allow sql procedrues
                    //  _unitOfWork.SP_Call.Execute(SD.Proc_VendorContact_Create, parameter);
                }
                else
                {
                    parameter.Add("@Id", vendorcontactVM.VendorContact.Id);
                    _unitOfWork.VendorContact.Update(vendorcontactVM.VendorContact);
                    //  _unitOfWork.SP_Call.Execute(SD.Proc_VendorContact_Update, parameter);
                }
                _unitOfWork.Save();
                return(RedirectToAction(nameof(Index))); // if any mistake the name is gotted
            }
            return(View(vendorcontactVM));
        }
        // create an method for upsert and can get null Id in case of create
        public IActionResult Upsert(int?id)
        {
            VendorContactVM vendorcontactVM = new VendorContactVM()
            {
                VendorContact = new VendorContact(),
                VendorList    = _unitOfWork.Vendor.GetAll().Select(i => new SelectListItem {
                    Text  = i.VendorName,
                    Value = i.Id.ToString()
                })
            };

            if (id == null) // create case
            {
                return(View(vendorcontactVM));
            }
            // this for edit request
            vendorcontactVM.VendorContact = _unitOfWork.VendorContact.Get(id.GetValueOrDefault()); // To add stored procedure

            //var parameter = new DynamicParameters(); // arrange parameters for sql server
            //parameter.Add("@Id", id); // arrange to send the Id

            // var objFromDb = _unitOfWork.VendorContact.Get(id);

            // vendorcontactVM = _unitOfWork.SP_Call.OneRecord<VendorContact>(SD.Proc_VendorContact_Get, parameter);



            if (vendorcontactVM.VendorContact == null)
            {
                return(NotFound());
            }
            return(View(vendorcontactVM));
            //   return View();
        }