//public IActionResult CheckPRARev(int PRIDRecords)
        //{
        //    this.PRAIDRecord=PRIDRecords; // Set the PRA Record to the required PRI



        //    return View("Index",this);

        //    //Index();// Call

        //    //if ((_unitOfWork.PRAQuote.GetAll(
        //    //    u => u.PRAId == (PRIDRecords),
        //    //    u => u.OrderBy(x => x.PRARevision)).
        //    //    Count() == 0))
        //    //{ Index(()); }
        //    ////return View();
        //    //int testcount = (_unitOfWork.PRAQuote.GetAll(
        //    //    u => u.PRAId == (PRIDRecords),
        //    //    u => u.OrderBy(x => x.PRARevision)).
        //    //    Count());
        //}

        // create an method for upsert and can get null Id in case of create
        public IActionResult Upsert(int?id)
        {
            PRAQuoteVM praquoteVM = new PRAQuoteVM()
            {
                PRAQuote       = new PRAQuote(),
                PRApprovalList = _unitOfWork.PRApproval.GetAll().Select(i => new SelectListItem
                {
                    Text  = i.PRApprovalId.ToString(),
                    Value = i.Id.ToString()
                }),

                EmployeeList = _unitOfWork.Employee.GetAll().Select(i => new SelectListItem
                {
                    Text  = i.EmployeeName,
                    Value = i.Id.ToString()
                }),

                QuoteList = _unitOfWork.Quote.GetAll().Select(i => new SelectListItem
                {
                    Text  = i.QuoteDescription,
                    Value = i.Id.ToString()
                }),

                QuoteList1 = _unitOfWork.Quote.GetAll().Select(i => new SelectListItem
                {
                    Text  = i.QuoteDescription,
                    Value = i.Id.ToString()
                }),

                QuoteList2 = _unitOfWork.Quote.GetAll().Select(i => new SelectListItem
                {
                    Text  = i.QuoteDescription,
                    Value = i.Id.ToString()
                })
            };

            if (id == null) // create case
            {
                return(View(praquoteVM));
            }
            // this for edit request
            praquoteVM.PRAQuote = _unitOfWork.PRAQuote.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.PRAQuote.Get(id);

            //praquote = _unitOfWork.SP_Call.OneRecord<PRAQuote>(SD.Proc_PRAQuote_Get, parameter);



            if (praquoteVM.PRAQuote == null)
            {
                return(NotFound());
            }
            return(View(praquoteVM));
            //   return View();
        }
        [Authorize(Roles = SD.Role_Admin_Modify + "," + SD.Role_Admin_View + "," + SD.Role_Employee_Modify)]// Add authorization Level

        public IActionResult Upsert(PRAQuoteVM praquoteVM)
        {
            if (ModelState.IsValid)
            {
                // to pass parameters to sql procedrues
                var parameter = new DynamicParameters();
                parameter.Add("@PRAQuoteDate", praquoteVM.PRAQuote.PRAQuoteDate);
                parameter.Add("@PRARevision", praquoteVM.PRAQuote.PRARevision);
                parameter.Add("@JustificationRev", praquoteVM.PRAQuote.JustificationRev);
                parameter.Add("@EstimatedPrice", praquoteVM.PRAQuote.EstimatedPrice);
                parameter.Add("@AddWarCost", praquoteVM.PRAQuote.AddWarCost);
                parameter.Add("@FreightCost", praquoteVM.PRAQuote.FreightCost);
                parameter.Add("@EnvFees", praquoteVM.PRAQuote.EnvFees);
                parameter.Add("@CarbonTax", praquoteVM.PRAQuote.CarbonTax);
                parameter.Add("@PSTCost", praquoteVM.PRAQuote.PSTCost);
                parameter.Add("@Mobilization", praquoteVM.PRAQuote.Mobilization);
                parameter.Add("@SiteOrientation", praquoteVM.PRAQuote.SiteOrientation);
                parameter.Add("@RentalInsurance", praquoteVM.PRAQuote.RentalInsurance);
                parameter.Add("@EquipmentDisinfection", praquoteVM.PRAQuote.EquipmentDisinfection);
                parameter.Add("@ContingencyPercentage", praquoteVM.PRAQuote.ContingencyPercentage);
                parameter.Add("@ContingencyAmount", praquoteVM.PRAQuote.ContingencyAmount);
                parameter.Add("@Total", praquoteVM.PRAQuote.Total);
                parameter.Add("@PRAId", praquoteVM.PRAQuote.PRAId);
                parameter.Add("@SubmittedBy ", praquoteVM.PRAQuote.SubmittedBy);
                parameter.Add("@QuoteId", praquoteVM.PRAQuote.QuoteId);
                parameter.Add("@QuoteAl1Id", praquoteVM.PRAQuote.QuoteAl1Id);
                parameter.Add("@QuoteAl2Id", praquoteVM.PRAQuote.QuoteAl2Id);



                if (praquoteVM.PRAQuote.Id == 0)                   // create case whenever no ID posted
                {
                    _unitOfWork.PRAQuote.Add(praquoteVM.PRAQuote); // to allow sql procedrues
                    //_unitOfWork.SP_Call.Execute(SD.Proc_PRAQuote_Create, parameter);
                }
                else
                {
                    parameter.Add("@Id", praquoteVM.PRAQuote.Id);
                    // _unitOfWork.SP_Call.Execute(SD.Proc_PRAQuote_Update, parameter);
                    _unitOfWork.PRAQuote.Update(praquoteVM.PRAQuote); // to allow sql procedrues
                }
                _unitOfWork.Save();
                EditExcelPRAQuote(_unitOfWork.PRApproval.Get(praquoteVM.PRAQuote.PRAId).ExcelFileUrl, praquoteVM.PRAQuote);

                return(RedirectToAction(nameof(Index))); // if any mistake the name is gotted
            }
            return(View(praquoteVM));
        }