public IHttpActionResult ApplyDiscountCode([FromBody] DiscountRequestModel drm) { var result = _svc.ApplyDiscountCode(drm); return(Ok(new { result })); }
public void CreateDarPdfForSendMail(DiscountRequestModel model) { long quoteId = model.QuoteId.Value; long projectId = model.ProjectId.Value; var urlAuth = Utilities.DocumentServerURL(); var controller = string.Format("{0}/{1}", urlAuth, "ProjectDashboard"); bool showCostPricing = true; var urlDiscountRequestFormBody = string.Format("{0}/{1}?discountRequestId={2}&projectId={3}"eId={4}&showCostPricing={5}", controller, "DiscountRequestPrint", model.DiscountRequestId, projectId, quoteId, showCostPricing); var urlDiscountRequestFormHeader = string.Format("{0}/{1}", controller, "DiscountRequestPrintHeader", projectId, quoteId); var urlDiscountRequestFormFooter = string.Format("{0}/{1}", controller, "DiscountRequestPrintFooter"); var pdf = new PdfConvertor(); var web = new WebClientLocal(System.Web.HttpContext.Current); pdf.Options.NoLink = false; pdf.Options.HeaderHtmlFormat = web.DownloadString(urlDiscountRequestFormHeader); pdf.Options.FooterHtmlFormat = web.DownloadString(urlDiscountRequestFormFooter); pdf.Options.FooterHtmlPosition = pdf.Options.OutputArea.Bottom - 1.25f; pdf.Options.OutputArea = new System.Drawing.RectangleF(0f, 1.25f, pdf.Options.OutputArea.Width, pdf.Options.OutputArea.Height - 2.5f); pdf.AppendHtml(web.DownloadString(urlDiscountRequestFormBody)); string root = System.Web.HttpContext.Current.Server.MapPath("~"); string parent = System.IO.Path.GetDirectoryName(root); string grandParent = System.IO.Path.GetDirectoryName(parent); string _last5DigitsOfProjectId = model.ProjectId.ToString() .Substring(model.ProjectId.ToString().Length - 5); string nameFile = "Daikin City Discount Request " + DateTime.Now.ToString("MM-dd-yyyy") + "-" + _last5DigitsOfProjectId + ".pdf"; string subPath = grandParent + "/CustomerDataFiles/DiscountRequestFiles/" + model.QuoteId; bool exists = System.IO.Directory.Exists(subPath); if (!exists) { System.IO.Directory.CreateDirectory(subPath); } string filePath = grandParent + "/CustomerDataFiles/DiscountRequestFiles/" + model.QuoteId + "/" + nameFile; pdf.Document.Save(filePath); }
public void RulesOnValidateModel(DiscountRequestModel model) { this.Response.Messages.Clear(); if (!model.IsValidEmails) { this.Response.Messages.AddError(Resources.ResourceModelProject.MP117); string errorMessage = "The following emails are not associated with DaikinCity account: "; for (int i = 0; i < model.InvalidEmails.Count; i++) { if (i == model.InvalidEmails.Count) { errorMessage += model.InvalidEmails[i]; } else { errorMessage += model.InvalidEmails[i] + ","; } } this.Response.Messages.AddError(errorMessage); errorMessage = ""; return; } //TODO: need to investigate why Request Discount != RequestedDiscount VRV //when there are only VRV products //This is the hacking to make sure RequestedDiscount == RequestedDiscountVRV //when there is only VRV products in the request or //RequestedDiscount == RequestedDiscountSplit when there is only Ductless products //Add on : Aaron Nguyen 09-23-2016 //TODO: Do we need to do this? - Huy Nguyen //if (model.RequestedDiscountVRV > 0 && model.RequestedDiscountSplit == 0) //{ // if(model.RequestedDiscount != model.RequestedDiscountVRV) // { // model.RequestedDiscount = model.RequestedDiscountVRV; // } //} //if(model.RequestedDiscountSplit > 0 && model.RequestedDiscountVRV == 0) //{ // if(model.RequestedDiscount != model.RequestedDiscountSplit) // { // model.RequestedDiscount = model.RequestedDiscountSplit; // } //} }
public ActionResult DiscountRequestReject(DiscountRequestModel model) { this.ServiceResponse = discountRequestService.Reject(this.CurrentUser, model); this.ShowKeyMessagesOnPage = true; if (ProcessServiceResponse(this.ServiceResponse)) { //email is sent to user if checkbox in DAR form is selected SendApprovalRejectionEmail(this.ServiceResponse.Model as DiscountRequestModel); return(RedirectToAction("DiscountRequests", "UserDashboard")); } return(View("DiscountRequest", this.ServiceResponse.Model)); }
public async Task <DiscountResponseModel> CalculateDiscountAsync([FromBody] DiscountRequestModel input) { try { var responseModel = await _deviceService.CalculateDiscountAsync(input.Devices.ToList()); if (responseModel != null) { return(responseModel); } } catch (Exception e) { throw e; } return(null); }
public ActionResult DiscountRequestApproveModification(DiscountRequestModel model, decimal discountRequestPercent) { //this.ServiceResponse = discountRequestService.Approve(this.CurrentUser, model); this.ShowKeyMessagesOnPage = true; //if (ProcessServiceResponse(this.ServiceResponse)) //{ // //force email to be sent to user // DiscountRequestModel DARForEmail = this.ServiceResponse.Model as DiscountRequestModel; // DARForEmail.ShouldSendEmail = true; // SendApprovalRejectionEmail(DARForEmail); // return RedirectToAction("DiscountRequests", "UserDashboard"); //} return(View("DiscountRequest", this.ServiceResponse.Model)); }
public ServiceResponse PostOrder(OrderViewModelLight model) { if (model.CurrentUser == null) { model.CurrentUser = this.CurrentUser; } if (model.CreatedByUserId == 0) { model.CreatedByUserId = model.CurrentUser.UserId; } if (model.UpdatedByUserId == 0) { model.UpdatedByUserId = model.CurrentUser.UserId; } var discountRequestVM = new DiscountRequestModel(); using (var discountRequestService = new DiscountRequestServices()) { this.ServiceResponse = discountRequestService.GetDiscountRequestModel(this.CurrentUser, model.ProjectId, model.QuoteId); discountRequestVM = ServiceResponse.Model as DiscountRequestModel; } if (model.ERPAccountId != null) { ServiceResponse = _erpSvcProvider.CheckPONumberExist(model.ERPAccountId, model.PONumber); } else { ServiceResponse.Messages.AddError(Resources.ResourceModelBusiness.BM010); } if (ServiceResponse.IsOK) { ServiceResponse = _orderServices.PostModel(this.CurrentUser, model); } return(ServiceResponse); }
public ActionResult DiscountRequestApprove(DiscountRequestModel model) { this.ServiceResponse = discountRequestService.Approve(this.CurrentUser, model); this.ShowKeyMessagesOnPage = true; if (ProcessServiceResponse(this.ServiceResponse)) { //force email to be sent to user DiscountRequestModel DARForEmail = this.ServiceResponse.Model as DiscountRequestModel; DARForEmail.ShouldSendEmail = true; CreateDarPdfForSendMail(DARForEmail); SendApprovalRejectionEmail(DARForEmail); return(RedirectToAction("DiscountRequests", "UserDashboard")); } return(View("DiscountRequest", this.ServiceResponse.Model)); }
public ActionResult DiscountRequestDelete(DiscountRequestModel model) { this.ServiceResponse = discountRequestService.Delete(this.CurrentUser, model); this.ShowKeyMessagesOnPage = true; if (ProcessServiceResponse(this.ServiceResponse)) { //force email to be sent to user DiscountRequestModel DARForEmail = this.ServiceResponse.Model as DiscountRequestModel; DARForEmail.ShouldSendEmail = true; SendApprovalRejectionEmail(DARForEmail); //return RedirectToAction("Quote", new QuoteModel { ProjectId = model.ProjectId, QuoteId = model.QuoteId }); string url = "/v2/#/quote/" + model.QuoteId + "/existingRecord"; return(Redirect(url)); } return(View("DiscountRequest", this.ServiceResponse.Model)); }
/// <inheritdoc /> public double ApplyDiscountCode(DiscountRequestModel drm) { //Create select statement var selectStatement = $@"SELECT SUM(IFNULL(Discount.OverridePrice, Item.Price)) as total FROM Item JOIN ShoppingCart_LinkTable ON Item.Id = ShoppingCart_LinkTable.ItemId LEFT OUTER JOIN Discount ON Item.Id = Discount.ItemId AND Discount.DiscountCode = '{drm.DiscountCode}' WHERE ShoppingCart_LinkTable.UserId = {drm.CurrentUser.Id}"; //Open DB _dbconn.Open(); //Start query try { using (var cmd = _dbconn.CreateCommand()) { cmd.CommandText = selectStatement; var rdr = cmd.ExecuteReader(); return(rdr.Read() ? Convert.ToDouble(rdr["total"]) : 0d); } } catch (Exception) { //@TODO: Add logging return(0d); } finally { if (_dbconn.State == ConnectionState.Open) { _dbconn.Close(); } } }
public ServiceResponse PostDiscountRequest(DiscountRequestModel model) { model.OrderDeliveryDate = model.Project.EstimatedDelivery; //Handle Emails List <string> emailsList = new List <string>(); if (model.EmailsList != null && model.EmailsList.Length > 0) { emailsList = model.EmailsList.ToString().Split(',', ';').ToList(); } EmailServices emailService = new EmailServices(); List <string> InvalidEmails = DiscountRequestService.GetInvalidEmails(emailsList); if (InvalidEmails.Count > 0) { foreach (string email in InvalidEmails) { model.InvalidEmails.Add(email); } model.IsValidEmails = false; } // set the RequestedDiscount equals to Approved Discount for Daikin Super User Testing Only // TODO: not sure what this is for ... //if (model.RequestedDiscount == 0) //{ // model.RequestedDiscount = model.ApprovedDiscount; //} this.ServiceResponse = DiscountRequestService.PostModel(this.CurrentUser, model); if (this.ServiceResponse.IsOK) { var response = ProjectService.PostModel(this.CurrentUser, model.Project); //=============Email============ var emailModel = DiscountRequestService.GetDiscountRequestSendEmailModel(model); //if (emailModel.discountRequest.RequestedDiscount == 0) //{ // var quoteModel = quoteService.GetQuoteModel(this.CurrentUser, model.ProjectId, model.QuoteId).Model as QuoteModel; // if (quoteModel != null) // { // emailModel.discountRequest.RequestedDiscount = quoteModel.DiscountPercentage * 100; // } //} emailModel.HelpLink = "mailto:[email protected]"; emailModel.Subject = string.Format("A DPO Discount request has been submitted"); emailModel.From = new MailAddress(Utilities.Config("dpo.sys.email.discountrequest"), "DPO Discount Request"); emailModel.To.Add(new MailAddress(Utilities.Config("dpo.sys.email.discountrequest"), "Daikin Project Desk")); //Add Account Manager - AccountOwner if (!string.IsNullOrEmpty(emailModel.AccountManagerEmail)) { emailModel.To.Add(new MailAddress(emailModel.AccountManagerEmail)); } if (!string.IsNullOrEmpty(emailModel.AccountOwnerEmail) && emailModel.AccountOwnerEmail != emailModel.AccountManagerEmail) { emailModel.To.Add(new MailAddress(emailModel.AccountOwnerEmail)); } //Add Project Owner if (model.ProjectOwnerId != null) { UserServices userService = new UserServices(); UserModel projectOwner = userService.GetUserModel(CurrentUser, model.ProjectOwnerId, true, true).Model as UserModel; if (projectOwner != null) { emailModel.To.Add(new MailAddress(projectOwner.Email)); } } //Add Email List foreach (string email in emailsList) { if (String.IsNullOrWhiteSpace(email)) { continue; } emailModel.To.Add(new MailAddress(email.Trim())); } //Render Email Body emailModel.RenderTextVersion = true; //emailModel.BodyTextVersion = RenderView(this, "SendEmailDiscountRequest", emailModel); emailModel.RenderTextVersion = false; //emailModel.BodyHtmlVersion = RenderView(this, "SendEmailDiscountRequest", emailModel); new EmailServices().SendEmail(emailModel); //Redirect to quote //string url = "/v2/#/quote/" + model.QuoteId + "/existingRecord"; //return Redirect(url); } return(this.ServiceResponse); }
private void SendApprovalRejectionEmail(DiscountRequestModel model) { string root = Server.MapPath("~"); string parent = System.IO.Path.GetDirectoryName(root); string grandParent = System.IO.Path.GetDirectoryName(parent); string _last5DigitsOfProjectId = model.ProjectId.ToString().Substring(model.ProjectId.ToString().Length - 5); string DARPdfFile = "Daikin City Discount Request " + DateTime.Now.ToString("MM-dd-yyyy") + "-" + _last5DigitsOfProjectId + ".pdf"; string DARPdfFilePath = grandParent + "/CustomerDataFiles/DiscountRequestFiles/" + model.QuoteId + "/" + DARPdfFile; var emailModel = new SendEmailApprovalModel(); emailModel.HelpLink = "mailto:[email protected]"; emailModel.Subject = string.Format("The status of a DPO Discount request has changed"); emailModel.Reason = model.ResponseNotes; emailModel.ProjectId = model.ProjectId; emailModel.ProjectName = model.Project.Name; emailModel.QuoteTitle = model.Quote.Title; emailModel.TotalNet = model.Quote.TotalNet; emailModel.Approved = (model.DiscountRequestStatusTypeId == (byte)DiscountRequestStatusTypeEnum.Approved); emailModel.ModifierName = model.DiscountRequestStatusModifiedBy; //only sent Dar attachment when approved Dar if (model.DiscountRequestStatusTypeId != (byte)DiscountRequestStatusTypeEnum.Rejected && model.DiscountRequestStatusTypeId != (byte)DiscountRequestStatusTypeEnum.Deleted) { emailModel.DARAttachmentFile = DARPdfFilePath; emailModel.DARAttachmentFileName = DARPdfFile; } UserSessionModel user = new UserSessionModel(); if (model.ProjectOwnerId != null) { user = new AccountServices().GetUserSessionModel(model.ProjectOwnerId.Value).Model as UserSessionModel; } else { user = new AccountServices().GetUserSessionModel(model.Project.OwnerId.Value).Model as UserSessionModel; } emailModel.ProjectOwnerName = user.FirstName + " " + user.LastName; emailModel.ProjectDate = model.Project.ProjectDate; var business = new BusinessServices().GetBusinessModel(user, user.BusinessId, false).Model as BusinessModel; emailModel.BusinessName = business.BusinessName; emailModel.RequestedDiscount = model.RequestedDiscount; emailModel.ApprovedDiscount = model.ApprovedDiscount; emailModel.From = new MailAddress(Utilities.Config("dpo.sys.email.discountrequest"), "DPO Project Desk"); if (model.ShouldSendEmail == true) { emailModel.To.Add(new MailAddress(user.Email, user.DisplayName)); } emailModel.To.Add(emailModel.From); if (!string.IsNullOrEmpty(business.AccountManagerEmail)) { emailModel.To.Add(new MailAddress(business.AccountManagerEmail)); } if (!string.IsNullOrEmpty(business.AccountOwnerEmail)) { emailModel.To.Add(new MailAddress(business.AccountOwnerEmail)); } List <string> emailsList = new List <string>(); if (model.EmailsList != null && model.EmailsList.Length > 0) { emailsList = model.EmailsList.ToString().Split(',', ';').ToList(); } foreach (string email in emailsList) { if (String.IsNullOrWhiteSpace(email)) { continue; } emailModel.To.Add(new MailAddress(email.Trim())); } emailModel.RenderTextVersion = true; emailModel.BodyTextVersion = RenderView(this, "SendEmailDiscountRequestApproval", emailModel); emailModel.RenderTextVersion = false; emailModel.BodyHtmlVersion = RenderView(this, "SendEmailDiscountRequestApproval", emailModel); new EmailServices().SendEmail(emailModel); }
public ActionResult DiscountRequest(DiscountRequestModel model) { model.CompetitorQuoteFile = Request.Files["CompetitorQuoteFile"]; model.CompetitorLineComparsionFile = Request.Files["CompetitorLineComparsionFile"]; model.CompetitorQuoteFileName = (model.CompetitorQuoteFile == null || model.CompetitorQuoteFile.FileName == "") ? model.CompetitorQuoteFileName : model.CompetitorQuoteFile.FileName; model.CompetitorLineComparsionFileName = (model.CompetitorLineComparsionFile == null || model.CompetitorLineComparsionFile.FileName == "") ? model.CompetitorLineComparsionFileName : model.CompetitorLineComparsionFile.FileName; model.OrderDeliveryDate = model.Project.EstimatedDelivery; List <string> emailsList = new List <string>(); if (model.EmailsList != null && model.EmailsList.Length > 0) { emailsList = model.EmailsList.ToString().Split(',', ';').ToList(); } EmailServices emailService = new EmailServices(); List <string> InvalidEmails = this.discountRequestService.GetInvalidEmails(emailsList); if (InvalidEmails.Count > 0) { foreach (string email in InvalidEmails) { model.InvalidEmails.Add(email); } model.IsValidEmails = false; } // set the RequestedDiscount equals to Approved Discount for Daikin Super User Testing Only if (model.RequestedDiscount == 0) { model.RequestedDiscount = model.ApprovedDiscount; } this.ServiceResponse = discountRequestService.PostModel(this.CurrentUser, model); if (ProcessServiceResponse(this.ServiceResponse)) { model.Project.EstimatedDelivery = model.OrderDeliveryDate; model.IsValidEmails = true; this.ServiceResponse = projectService.PostModel(this.CurrentUser, model.Project); var emailModel = this.discountRequestService.GetDiscountRequestSendEmailModel(model); if (emailModel.discountRequest.RequestedDiscount == 0) { var quoteModel = quoteService.GetQuoteModel(this.CurrentUser, model.ProjectId, model.QuoteId).Model as QuoteModel; if (quoteModel != null) { emailModel.discountRequest.RequestedDiscount = quoteModel.DiscountPercentage * 100; } } emailModel.HelpLink = "mailto:[email protected]"; emailModel.Subject = string.Format("A DPO Discount request has been submitted"); emailModel.From = new MailAddress(Utilities.Config("dpo.sys.email.discountrequest"), "DPO Discount Request"); emailModel.To.Add(new MailAddress(Utilities.Config("dpo.sys.email.discountrequest"), "Daikin Project Desk")); if (!string.IsNullOrEmpty(emailModel.AccountManagerEmail)) { emailModel.To.Add(new MailAddress(emailModel.AccountManagerEmail)); } if (!string.IsNullOrEmpty(emailModel.AccountOwnerEmail) && emailModel.AccountOwnerEmail != emailModel.AccountManagerEmail) { emailModel.To.Add(new MailAddress(emailModel.AccountOwnerEmail)); } if (model.ProjectOwnerId != null) { UserServices userService = new UserServices(); UserModel projectOwner = userService.GetUserModel(CurrentUser, model.ProjectOwnerId, true, true).Model as UserModel; if (projectOwner != null) { emailModel.To.Add(new MailAddress(projectOwner.Email)); } } foreach (string email in emailsList) { if (String.IsNullOrWhiteSpace(email)) { continue; } emailModel.To.Add(new MailAddress(email.Trim())); } emailModel.RenderTextVersion = true; emailModel.BodyTextVersion = RenderView(this, "SendEmailDiscountRequest", emailModel); emailModel.RenderTextVersion = false; emailModel.BodyHtmlVersion = RenderView(this, "SendEmailDiscountRequest", emailModel); new EmailServices().SendEmail(emailModel); //return RedirectToAction("Quote", new QuoteModel { ProjectId = model.ProjectId, QuoteId = model.QuoteId }); string url = "/v2/#/quote/" + model.QuoteId + "/existingRecord"; return(Redirect(url)); } ModelState.Clear(); return(View("DiscountRequest", this.ServiceResponse.Model)); }
/// <inheritdoc /> public double ApplyDiscountCode(DiscountRequestModel drm) => _vreader.ApplyDiscountCode(drm);