public ActionResult Edit(int id)
        {
            tblCommissioning obj = _dbRepository.SelectById(id);

            obj.IsWarrantyPeriodChange = false;
            return(View("Create", obj));
        }
        public static void GetListOfWarrantyExpiry()
        {
            List <GetWarrantyExpiryCustomerList_Result> listExpitry = new List <GetWarrantyExpiryCustomerList_Result>();

            using (StandardEngEntities context = BaseContext.GetDbContext())
            {
                listExpitry = context.GetWarrantyExpiryCustomerList().Where(m => m.IsReadyForAMC == false).ToList();

                if (listExpitry.Count > 0)
                {
                    string bodyTemplate = System.IO.File.ReadAllText(System.Web.Hosting.HostingEnvironment.MapPath("~/Template/WarrantyExpiryReminder.html"));

                    foreach (GetWarrantyExpiryCustomerList_Result obj in listExpitry)
                    {
                        tblCommissioning commisioningObj = new tblCommissioning();
                        bodyTemplate = bodyTemplate.Replace("[@CustomerName]", obj.CustomerName);
                        bodyTemplate = bodyTemplate.Replace("[@MachineModel]", obj.MachineName);
                        bodyTemplate = bodyTemplate.Replace("[@MachineType]", obj.MachineTypeName);
                        bodyTemplate = bodyTemplate.Replace("[@MachineSerialNo]", obj.MachineSerialNo);
                        bodyTemplate = bodyTemplate.Replace("[@ExpiryDate]", obj.WarrantyExpireDate);

                        Task task = new Task(() => EmailHelper.SendAsyncEmail(obj.CustomerEmail, "Machine Warranty Expiry Reminder", bodyTemplate, true));
                        task.Start();

                        commisioningObj = context.tblCommissioning.Where(m => m.CommissioningId == obj.CommissioningId).FirstOrDefault();
                        commisioningObj.IsReadyForAMC = true;

                        context.Entry(commisioningObj).State = EntityState.Modified;
                        context.SaveChanges();
                    }
                }
            }
        }
        public ActionResult GenerateAMCQuotation(AMCQuotationPartialModel model)
        {
            if (model.CommissioningId != 0)
            {
                bool isExists = _dbRepositoryAMCQ.GetEntities().Any(m => m.CommissioningId == model.CommissioningId &&
                                                                    m.ActualAmount == model.QuotationAmount &&
                                                                    m.GSTPercentage == model.GSTPercentage);

                if (isExists)
                {
                    return(Json(new { id = String.Empty, error = "Quotation with same amount & GST percentage already exists." }, JsonRequestBehavior.AllowGet));
                }
                tblCommissioning          commissioningObj       = _dbRepository.SelectById(model.CommissioningId);
                tblPreCommissioningDetail preCommissioningDetail = _dbRepositoryPreCD.GetEntities()
                                                                   .Where(m => m.PCDetailId == commissioningObj.PreCommissioningDetailId)
                                                                   .Include(m => m.tblPreCommissioning).FirstOrDefault();

                tblAMCQuotation quotatationObj = new tblAMCQuotation();
                quotatationObj.CommissioningId    = commissioningObj.CommissioningId;
                quotatationObj.MachineModelId     = commissioningObj.MachineModelId.Value;
                quotatationObj.MachineTypeId      = commissioningObj.MachineTypeId.Value;
                quotatationObj.MachineSerialNo    = commissioningObj.MachineSerialNo;
                quotatationObj.CustomerId         = preCommissioningDetail.tblPreCommissioning.CustomerId;
                quotatationObj.QuotationDate      = DateTime.Now.Date;
                quotatationObj.ActualAmount       = model.QuotationAmount;
                quotatationObj.GSTPercentage      = model.GSTPercentage;
                quotatationObj.GSTAmount          = model.GSTAmount;
                quotatationObj.CGSTPercentage     = model.GSTPercentage / 2;
                quotatationObj.CGSTAmount         = model.GSTAmount / 2;
                quotatationObj.TotalAmount        = model.TotalAmount;
                quotatationObj.TotalAmountInWords = CurrencyHelper.changeCurrencyToWords(model.TotalAmount);
                quotatationObj.IsConvertedIntoAMC = false;
                quotatationObj.CreatedBy          = SessionHelper.UserId;
                quotatationObj.CreatedDate        = DateTime.Now.Date;
                string result = _dbRepositoryAMCQ.Insert(quotatationObj);
                if (string.IsNullOrEmpty(result))
                {
                    return(Json(new { id = quotatationObj.Id.ToString(), error = String.Empty }, JsonRequestBehavior.AllowGet));
                }
            }
            return(Json(new { id = String.Empty, error = "Something Went Wrong." }, JsonRequestBehavior.AllowGet));
        }
        public ActionResult GeneratePartsQuotation(int CommisionId)
        {
            tblCommissioning commissioningObj = _dbRepository.SelectById(CommisionId);

            if (commissioningObj != null)
            {
                tblCustomerContactPersons contactPerson = _dbRepositoryContact.SelectById(commissioningObj.ContactPersonId);
                tblMachinePartsQuotation  quotationObj  = new tblMachinePartsQuotation();
                quotationObj.CustomerId                = commissioningObj.CustomerId;
                quotationObj.CustomerContactPId        = commissioningObj.ContactPersonId;
                quotationObj.CustomerContactPContactNo = contactPerson.ContactNo;
                quotationObj.Email             = contactPerson.ContactPersonEmail;
                quotationObj.QuotationDate     = DateTime.Now.Date;
                quotationObj.ReportServiceNo   = commissioningObj.ReportServiceNo;
                quotationObj.ServiceEngineerId = commissioningObj.ServiceEngineerId;
                quotationObj.InquiryNo         = String.Empty;
                quotationObj.InquiryDate       = DateTime.Now.Date;
                quotationObj.PaymentTerms      = String.Empty;
                quotationObj.DeliveryWeeks     = 0;
                quotationObj.FreightAmount     = 0;
                quotationObj.TotalFinalAmount  = 0;
                quotationObj.QuotationAmount   = 0;
                quotationObj.Insurance         = String.Empty;
                quotationObj.ValidityDays      = 0;
                quotationObj.CreatedBy         = SessionHelper.UserId;
                quotationObj.CreatedDate       = DateTime.Now.Date;
                quotationObj.IsPIGenerated     = false;

                string result = _dbRepositoryPartsQ.Insert(quotationObj);
                if (string.IsNullOrEmpty(result))
                {
                    return(RedirectToAction("Edit", "MachinePartsQuotation", new { id = quotationObj.MachinePartsQuotationId }));
                }
            }
            return(RedirectToAction("Edit", "Commissioning", new { id = CommisionId }));
        }
        public string GenerateAMC(AMCPartialModel model)
        {
            if (model.AMCQuotationId != 0)
            {
                tblAMCQuotation quotation = _dbRepository.SelectById(model.AMCQuotationId);
                if (quotation != null)
                {
                    tblAMC amcObj = new tblAMC();
                    amcObj.AMCQuotationId  = quotation.Id;
                    amcObj.CustomerId      = quotation.CustomerId;
                    amcObj.MachineModelId  = quotation.MachineModelId;
                    amcObj.MachineTypeId   = quotation.MachineTypeId;
                    amcObj.MachineSerialNo = quotation.MachineSerialNo;
                    amcObj.AMCQuotationNo  = quotation.AMCQuotationNo;
                    amcObj.ActualAmount    = quotation.ActualAmount;
                    amcObj.GSTPercentage   = quotation.GSTPercentage;
                    amcObj.GSTAmount       = quotation.GSTAmount;
                    amcObj.TotalAmount     = quotation.TotalAmount;
                    amcObj.Remarks         = model.Remarks;
                    amcObj.AMCStartDate    = DateTime.Now.Date;
                    amcObj.AMCEndDate      = DateTime.Now.Date.AddYears(1);
                    amcObj.IsAMCExpired    = false;
                    amcObj.CreatedBy       = SessionHelper.UserId;
                    amcObj.CreatedDate     = DateTime.Now.Date;
                    string result = _dbRepositoryAMC.Insert(amcObj);

                    if (string.IsNullOrEmpty(result))
                    {
                        quotation.IsApproved = true;
                        //quotation.IsConvertedIntoAMC = true;
                        _dbRepository.Update(quotation);

                        List <tblAMCQuotation> quotationList = new List <tblAMCQuotation>();
                        if (quotation.CommissioningId != 0)
                        {
                            quotationList = _dbRepository.GetEntities().Where(m => m.CommissioningId == quotation.CommissioningId).ToList();
                            foreach (tblAMCQuotation obj in quotationList)
                            {
                                obj.IsConvertedIntoAMC = true;
                                _dbRepository.Update(obj);
                            }
                        }
                        else
                        {
                            quotationList = _dbRepository.GetEntities().Where(m => m.CustomerId == quotation.CustomerId && m.MachineTypeId == quotation.MachineTypeId &&
                                                                              m.MachineModelId == quotation.MachineModelId &&
                                                                              m.MachineSerialNo == quotation.MachineSerialNo).ToList();
                            foreach (tblAMCQuotation obj in quotationList)
                            {
                                obj.IsConvertedIntoAMC = true;
                                _dbRepository.Update(obj);
                            }
                        }

                        if (quotation.CommissioningId != null && quotation.CommissioningId != 0)
                        {
                            tblCommissioning commsioningObj = _dbRepositoryCommissioning.SelectById(quotation.CommissioningId);
                            commsioningObj.IsConvertedToAMC = true;
                            _dbRepositoryCommissioning.Update(commsioningObj);
                        }


                        tblAMCServices amcServie1 = new tblAMCServices();
                        amcServie1.AMCId         = amcObj.AMCId;
                        amcServie1.ServiceDate   = DateTime.Now.Date.AddMonths(3);
                        amcServie1.IsServiceDone = false;
                        amcServie1.CreatedBy     = SessionHelper.UserId;
                        amcServie1.CreatedDate   = DateTime.Now.Date;
                        _dbRepositoryAMCService.Insert(amcServie1);

                        tblAMCServices amcServie2 = new tblAMCServices();
                        amcServie2.AMCId         = amcObj.AMCId;
                        amcServie2.ServiceDate   = DateTime.Now.Date.AddMonths(6);
                        amcServie2.IsServiceDone = false;
                        amcServie2.CreatedBy     = SessionHelper.UserId;
                        amcServie2.CreatedDate   = DateTime.Now.Date;
                        _dbRepositoryAMCService.Insert(amcServie2);

                        tblAMCServices amcServie3 = new tblAMCServices();
                        amcServie3.AMCId         = amcObj.AMCId;
                        amcServie3.ServiceDate   = DateTime.Now.Date.AddMonths(9);
                        amcServie3.IsServiceDone = false;
                        amcServie3.CreatedBy     = SessionHelper.UserId;
                        amcServie3.CreatedDate   = DateTime.Now.Date;
                        _dbRepositoryAMCService.Insert(amcServie3);

                        tblAMCServices amcServie4 = new tblAMCServices();
                        amcServie4.AMCId         = amcObj.AMCId;
                        amcServie4.ServiceDate   = DateTime.Now.Date.AddDays(1);
                        amcServie4.IsServiceDone = false;
                        amcServie4.CreatedBy     = SessionHelper.UserId;
                        amcServie4.CreatedDate   = DateTime.Now.Date;
                        _dbRepositoryAMCService.Insert(amcServie4);

                        return(amcObj.AMCId.ToString());
                    }
                }
            }
            return(String.Empty);
        }
        public ActionResult SaveModelData(tblCommissioning model, HttpPostedFileBase fileUnit, string create = null)
        {
            if (!ModelState.IsValid)
            {
                return(View("Create", model));
            }

            string message = string.Empty;

            try
            {
                if (fileUnit != null)
                {
                    string fileExtension = Path.GetExtension(fileUnit.FileName);
                    string FileName      = Guid.NewGuid().ToString() + fileExtension;
                    string physicalPath  = Path.Combine(Server.MapPath("~/Uploads"), FileName);
                    fileUnit.SaveAs(physicalPath);
                    model.CommissioningFileName = FileName;
                }

                if (model.CommissioningId > 0)
                {
                    model.ModifiedBy   = SessionHelper.UserId;
                    model.ModifiedDate = DateTime.Now;
                    message            = _dbRepository.Update(model);

                    if (model.IsWarrantyPeriodChange)
                    {
                        tblWarrantyexpires warrantyObj = _dbRepositoryWarranty.GetEntities().Where(m => m.CommissioningId == model.CommissioningId).FirstOrDefault();
                        if (warrantyObj != null)
                        {
                            warrantyObj.WarrantyExpireDate = model.WarrantyExpireDate;
                            _dbRepositoryWarranty.Update(warrantyObj);
                        }
                    }
                }
                else
                {
                    model.CreatedBy   = SessionHelper.UserId;
                    model.CreatedDate = DateTime.Now;
                    message           = _dbRepository.Insert(model);
                }
            }
            catch (Exception ex)
            {
                message = CommonHelper.GetErrorMessage(ex);
            }

            if (model.CommissioningId > 0)
            {
                if (create == "Save & Continue")
                {
                    return(RedirectToAction("Edit", new { id = model.CommissioningId }));
                }
                else if (create == "Save & New")
                {
                    return(RedirectToAction("Create"));
                }
            }
            return(RedirectToAction("Index"));
        }
        public ActionResult FinalizePreCommission(int id)
        {
            try
            {
                tblCommissioning commissionobj = new tblCommissioning();
                //tblPreCommissioning precommiobj = _dbRepositoryPreC.GetEntities().Where(m => m.PreCommissioningId == PreCommisionId).Include(m => m.tblMachineModels).FirstOrDefault();
                tblPreCommissioningDetail precommisdetailobj = _dbRepositoryPreCD.GetEntities().FirstOrDefault(m => m.PCDetailId == id);
                tblPreCommissioning       precommiobj        = _dbRepositoryPreC.GetEntities().FirstOrDefault(m => m.PreCommissioningId == precommisdetailobj.PreCommissionId);

                if (precommisdetailobj.PCMachineId > 0)
                {
                    tblPreCommissioningMachine precommimachine = _dbPreMachine.GetEntities().Include(m => m.tblMachineModels)
                                                                 .FirstOrDefault(m => m.PCMachined == precommisdetailobj.PCMachineId);

                    commissionobj.MachineTypeId      = precommimachine.MachineTypeId;
                    commissionobj.MachineModelId     = precommimachine.MachineModeld;
                    commissionobj.MachineSerialNo    = precommimachine.MachineSerialNo;
                    commissionobj.WarrantyPeriod     = precommimachine.tblMachineModels.WarrantyPeriod;
                    commissionobj.WarrantyExpireDate = precommisdetailobj.PreCommisoningDate.AddMonths(precommimachine.tblMachineModels.WarrantyPeriod);
                }
                if (precommisdetailobj.PCAccesseriesId > 0)
                {
                    tblPreCommissioningAccessories precommiasseccory = _dbPreAccessory.GetEntities().Include(m => m.tblMachineAccessories)
                                                                       .FirstOrDefault(m => m.PCAccessoriesId == precommisdetailobj.PCAccesseriesId);

                    commissionobj.AccessoriesTypeId    = precommiasseccory.AccessoriesTypeId;
                    commissionobj.MachineAccessoriesId = precommiasseccory.MachineAccessoriesId;
                    commissionobj.AccessoriesSerialNo  = precommiasseccory.AccessoriesSerialNo;
                    commissionobj.WarrantyPeriod       = 6;
                    commissionobj.WarrantyExpireDate   = precommisdetailobj.PreCommisoningDate.AddMonths(6);
                }

                tblCustomerContactPersons contactPerson = _dbRepositoryContact.GetEntities().FirstOrDefault(m => m.ContactPersonId == precommiobj.ContactPersonId);

                commissionobj.CustomerId               = precommiobj.CustomerId;
                commissionobj.ContactPersonId          = precommiobj.ContactPersonId;
                commissionobj.ContactPersonContactNo   = contactPerson.ContactNo;
                commissionobj.PreCommissioningDetailId = precommisdetailobj.PCDetailId;
                commissionobj.ServiceEngineerId        = precommisdetailobj.ServiceEngineerId;
                commissionobj.CommissioningDate        = precommisdetailobj.PreCommisoningDate;
                commissionobj.IsConvertedToAMC         = false;
                commissionobj.IsReadyForAMC            = false;
                commissionobj.CreatedBy   = SessionHelper.UserId;
                commissionobj.CreatedDate = DateTime.Now;

                string result = _dbRepository.Insert(commissionobj);

                if (!string.IsNullOrEmpty(result))
                {
                    return(RedirectToAction("Edit", "PreCommissioning", new { id = id }));
                }
                tblWarrantyexpires warrantyObj = new tblWarrantyexpires();
                warrantyObj.CommissioningId        = commissionobj.CommissioningId;
                warrantyObj.CommissioningDate      = precommisdetailobj.PreCommisoningDate;
                warrantyObj.WarrantyExpireDate     = commissionobj.WarrantyExpireDate;
                warrantyObj.IsConvertIntoAMC       = false;
                warrantyObj.IsConvertIntoChargable = false;
                warrantyObj.CreatedBy   = SessionHelper.UserId;
                warrantyObj.CreatedDate = DateTime.Now;
                string resultWarranty = _dbRepositoryWarranty.Insert(warrantyObj);

                precommisdetailobj.IsCommisioning = true;
                _dbRepositoryPreCD.Update(precommisdetailobj);

                //precommiobj.IsCommissioningDone = true;
                //_dbRepositoryPreC.Update(precommiobj);

                return(RedirectToAction("Edit", "Commissioning", new { id = commissionobj.CommissioningId }));
            }
            catch (Exception ex)
            {
                string Message = CommonHelper.GetDeleteException(ex);
                return(RedirectToAction("Index", "Commissioning"));
            }
        }
        public ActionResult KendoDestroy([DataSourceRequest] DataSourceRequest request, tblCommissioning model)
        {
            string deleteMessage = _dbRepository.Delete(model.CommissioningId);

            ModelState.Clear();
            if (!string.IsNullOrEmpty(deleteMessage))
            {
                ModelState.AddModelError(deleteMessage, deleteMessage);
            }

            return(Json(new[] { model }.ToDataSourceResult(request, ModelState)));
        }