public IActionResult SetTaskRecurrenceOnPost(RecordDetailsPageModel pageModel) { ValidationException valEx = new ValidationException(); if (!pageModel.HttpContext.Request.Form.ContainsKey("recurrence_template")) { valEx.AddError("recurrence_template", "Recurrence settings missing in post data"); throw valEx; } EntityRecord taskRecord = (EntityRecord)pageModel.DataModel.GetProperty("Record"); if (taskRecord["start_time"] == null) { valEx.AddError("start_time", "Start time should be specified before set task recurrence"); } if (taskRecord["end_time"] == null) { valEx.AddError("end_time", "End time should be specified before set task recurrence"); } valEx.CheckAndThrow(); RecurrenceTemplate recurrenceData = JsonConvert.DeserializeObject <RecurrenceTemplate>(pageModel.HttpContext.Request.Form["recurrence_template"]); return(null); }
public IActionResult EmailSendNowOnPost(RecordDetailsPageModel pageModel) { var emailId = (Guid)pageModel.DataModel.GetProperty("Record.id"); var internalSmtpSrv = new SmtpInternalService(); Email email = internalSmtpSrv.GetEmail(emailId); SmtpService smtpService = new EmailServiceManager().GetSmtpService(email.ServiceId); internalSmtpSrv.SendEmail(email, smtpService); if (email.Status == EmailStatus.Sent) { pageModel.TempData.Put("ScreenMessage", new ScreenMessage() { Message = "Email was successfully sent", Type = ScreenMessageType.Success, Title = "Success" }); } else { pageModel.TempData.Put("ScreenMessage", new ScreenMessage() { Message = email.ServerError, Type = ScreenMessageType.Error, Title = "Error" }); } var returnUrl = pageModel.HttpContext.Request.Query["returnUrl"]; return(new RedirectResult($"/mail/emails/all/r/{emailId}/details?returnUrl={returnUrl}")); }
public IActionResult TestSmtpServiceOnPost(RecordDetailsPageModel pageModel) { SmtpService smtpService = null; string recipientEmail = string.Empty; string subject = string.Empty; string content = string.Empty; ValidationException valEx = new ValidationException(); if (pageModel.HttpContext.Request.Form == null) { valEx.AddError("form", "Smtp service test page missing form tag"); valEx.CheckAndThrow(); } if (!pageModel.HttpContext.Request.Form.ContainsKey("recipient_email")) { valEx.AddError("recipient_email", "Recipient email is not specified."); } else { recipientEmail = pageModel.HttpContext.Request.Form["recipient_email"]; if (string.IsNullOrWhiteSpace(recipientEmail)) { valEx.AddError("recipient_email", "Recipient email is not specified"); } else if (!recipientEmail.IsEmail()) { valEx.AddError("recipient_email", "Recipient email is not a valid email address"); } } if (!pageModel.HttpContext.Request.Form.ContainsKey("subject")) { valEx.AddError("subject", "Subject is not specified"); } else { subject = pageModel.HttpContext.Request.Form["subject"]; if (string.IsNullOrWhiteSpace(subject)) { valEx.AddError("subject", "Subject is required"); } } if (!pageModel.HttpContext.Request.Form.ContainsKey("content")) { valEx.AddError("content", "Content is not specified"); } else { content = pageModel.HttpContext.Request.Form["content"]; if (string.IsNullOrWhiteSpace(content)) { valEx.AddError("content", "Content is required"); } } var smtpServiceId = pageModel.DataModel.GetProperty("Record.id") as Guid?; if (smtpServiceId == null) { valEx.AddError("serviceId", "Invalid smtp service id"); } else { smtpService = new EmailServiceManager().GetSmtpService(smtpServiceId.Value); if (smtpService == null) { valEx.AddError("serviceId", "Smtp service with specified id does not exist"); } } List <string> attachments = new List <string>(); if (pageModel.HttpContext.Request.Form.ContainsKey("attachments")) { var ids = pageModel.HttpContext.Request.Form["attachments"].ToString().Split(",", StringSplitOptions.RemoveEmptyEntries).Select(x => new Guid(x)); foreach (var id in ids) { var fileRecord = new EqlCommand("SELECT name,path FROM user_file WHERE id = @id", new EqlParameter("id", id)).Execute().FirstOrDefault(); if (fileRecord != null) { attachments.Add((string)fileRecord["path"]); } } } //we set current record to store properties which don't exist in current entity EntityRecord currentRecord = pageModel.DataModel.GetProperty("Record") as EntityRecord; currentRecord["recipient_email"] = recipientEmail; currentRecord["subject"] = subject; currentRecord["content"] = content; pageModel.DataModel.SetRecord(currentRecord); valEx.CheckAndThrow(); try { EmailAddress recipient = new EmailAddress(recipientEmail); smtpService.SendEmail(recipient, subject, string.Empty, content, attachments: attachments); pageModel.TempData.Put("ScreenMessage", new ScreenMessage() { Message = "Email was successfully sent", Type = ScreenMessageType.Success, Title = "Success" }); var returnUrl = pageModel.HttpContext.Request.Query["returnUrl"]; return(new RedirectResult($"/mail/services/smtp/r/{smtpService.Id}/details?returnUrl={returnUrl}")); } catch (Exception ex) { valEx.AddError("", ex.Message); valEx.CheckAndThrow(); return(null); } }
public IActionResult OnPost(RecordDetailsPageModel pageModel) { return(new TaskService().SetTaskRecurrenceOnPost(pageModel)); }
public IActionResult SetTaskRecurrenceOnPost(RecordDetailsPageModel pageModel) { ValidationException valEx = new ValidationException(); if (!pageModel.HttpContext.Request.Form.ContainsKey("recurrence_template")) { valEx.AddError("recurrence_template", "Recurrence settings missing in post data"); throw valEx; } DateTime startTime = DateTime.Today; DateTime endTime = DateTime.Today; if (!pageModel.HttpContext.Request.Form.ContainsKey("start_time")) { valEx.AddError("start_time", "Start time is required"); } else if (!DateTime.TryParse(pageModel.HttpContext.Request.Form["start_time"], out startTime)) { valEx.AddError("start_time", "Start time is required"); } if (!pageModel.HttpContext.Request.Form.ContainsKey("end_time")) { valEx.AddError("end_time", "End time is required"); } else if (!DateTime.TryParse(pageModel.HttpContext.Request.Form["start_time"], out endTime)) { valEx.AddError("end_time", "End time is required"); } valEx.CheckAndThrow(); if (startTime < DateTime.Today) { valEx.AddError("start_time", "Start time should be today or any future date."); } //because in this case we post dates, we need to move time to the end of the day endTime = endTime.AddHours(23).AddMinutes(59).AddSeconds(59); if (endTime <= startTime) { valEx.AddError("end_time", "End time should be today or any future date."); } //todo validate status ?? //todo validate completed on ?? valEx.CheckAndThrow(); //EntityRecord taskRecord = (EntityRecord)pageModel.DataModel.GetProperty("Record"); //if (taskRecord["recurrence_id"] == null) //{ // Guid recurrenceId = Guid.NewGuid(); // RecurrenceTemplate recurrenceData = JsonConvert.DeserializeObject<RecurrenceTemplate>(pageModel.HttpContext.Request.Form["recurrence_template"]); // var occurrences = recurrenceData.CalculateOccurrences(startTime, endTime, startTime, startTime.AddYears(5) ); // foreach (var o in occurrences) // { // var ocStartTime = o.Period.StartTime.AsDateTimeOffset.DateTime; // var ocEndTime = o.Period.EndTime.AsDateTimeOffset.DateTime; // EntityRecord newTask = new EntityRecord(); // newTask["id"] = Guid.NewGuid(); // newTask["start_time"] = ocStartTime; // newTask["end_time"] = ocEndTime; // newTask["l_scope"] = taskRecord["l_scope"]; // newTask["subject"] = taskRecord["subject"]; // newTask["body"] = taskRecord["body"]; // newTask["owner_id"] = taskRecord["owner_id"]; // newTask["created_on"] = taskRecord["created_on"]; // newTask["created_by"] = taskRecord["created_by"]; // newTask["completed_on"] = null; // newTask["parent_id"] = taskRecord["parent_id"]; // newTask["status_id"] = taskRecord["status_id"]; // ??set always as pending // newTask["priority"] = taskRecord["priority"]; // newTask["type_id"] = taskRecord["type_id"]; // newTask["key"] = Guid.NewGuid().ToString(); //set as unique guid text, post create hook will update it // newTask["x_billable_minutes"] = 0; // newTask["x_nonbillable_minutes"] = 0; // newTask["estimated_minutes"] = taskRecord["estimated_minutes"]; // newTask["timelog_started_on"] = null; // newTask["recurrence_id"] = recurrenceId; // newTask["reserve_time"] = taskRecord["reserve_time"]; // newTask["recurrence_template"] = JsonConvert.SerializeObject(recurrenceData); // //Debug.WriteLine($"{o.Period.StartTime}-{o.Period.EndTime}"); // } //} //else //{ // //UPDATE RECURRENCE CHAIN //} return(null); }
public IActionResult OnPost(RecordDetailsPageModel pageModel) { return(new SmtpInternalService().TestSmtpServiceOnPost(pageModel)); }
public IActionResult OnGet(RecordDetailsPageModel pageModel) { return(null); }
public IActionResult TestSmtpServiceOnPost(RecordDetailsPageModel pageModel) { SmtpService smtpService = null; string recipientEmail = string.Empty; string subject = string.Empty; string content = string.Empty; ValidationException valEx = new ValidationException(); if (pageModel.HttpContext.Request.Form == null) { valEx.AddError("form", "Smtp service test page missing form tag"); valEx.CheckAndThrow(); } if (!pageModel.HttpContext.Request.Form.ContainsKey("recipient_email")) { valEx.AddError("recipient_email", "Recipient email is not specified."); } else { recipientEmail = pageModel.HttpContext.Request.Form["recipient_email"]; if (string.IsNullOrWhiteSpace(recipientEmail)) { valEx.AddError("recipient_email", "Recipient email is not specified"); } else if (!recipientEmail.IsEmail()) { valEx.AddError("recipient_email", "Recipient email is not a valid email address"); } } if (!pageModel.HttpContext.Request.Form.ContainsKey("subject")) { valEx.AddError("subject", "Subject is not specified"); } else { subject = pageModel.HttpContext.Request.Form["subject"]; if (string.IsNullOrWhiteSpace(subject)) { valEx.AddError("subject", "Subject is required"); } } if (!pageModel.HttpContext.Request.Form.ContainsKey("content")) { valEx.AddError("content", "Content is not specified"); } else { content = pageModel.HttpContext.Request.Form["content"]; if (string.IsNullOrWhiteSpace(content)) { valEx.AddError("content", "Content is required"); } } var smtpServiceId = pageModel.DataModel.GetProperty("Record.id") as Guid?; if (smtpServiceId == null) { valEx.AddError("serviceId", "Invalid smtp service id"); } else { smtpService = new ServiceManager().GetSmtpService(smtpServiceId.Value); if (smtpService == null) { valEx.AddError("serviceId", "Smtp service with specified id does not exist"); } } //we set current record to store properties which don't exist in current entity EntityRecord currentRecord = pageModel.DataModel.GetProperty("Record") as EntityRecord; currentRecord["recipient_email"] = recipientEmail; currentRecord["subject"] = subject; currentRecord["content"] = content; pageModel.DataModel.SetRecord(currentRecord); valEx.CheckAndThrow(); try { smtpService.SendEmail(string.Empty, recipientEmail, subject, string.Empty, content); pageModel.TempData.Put("ScreenMessage", new ScreenMessage() { Message = "Email was successfully sent", Type = ScreenMessageType.Success, Title = "Success" }); var returnUrl = pageModel.HttpContext.Request.Query["returnUrl"]; return(new RedirectResult($"/mail/services/smtp/r/{smtpService.Id}/details?returnUrl={returnUrl}")); } catch (Exception ex) { valEx.AddError("", ex.Message); valEx.CheckAndThrow(); return(null); } }