Exemple #1
0
        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);
        }
Exemple #2
0
        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}"));
        }
Exemple #3
0
        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);
            }
        }
Exemple #4
0
 public IActionResult OnPost(RecordDetailsPageModel pageModel)
 {
     return(new TaskService().SetTaskRecurrenceOnPost(pageModel));
 }
Exemple #5
0
        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);
 }
Exemple #8
0
        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);
            }
        }