Exemple #1
0
        public object Get()
        {
            IList <EmailScheduler> lstEmailScheduler = new List <EmailScheduler>();

            DataTable dtEmailArticle = DataBase.DBService.ExecuteCommand(GET_ALL_EMAILSCHEDULE_QUERY);

            ///DataTable dtEmailArticle = getDummyArticleData();
            foreach (DataRow dr in dtEmailArticle.Rows)
            {
                EmailScheduler emailScheduler = new EmailScheduler();
                emailScheduler.ID                 = dr.Field <int>("ID");
                emailScheduler.ArticleGroupId     = dr.Field <int>("ArticleGroupId");
                emailScheduler.ArticleGroupName   = dr.Field <string>("ArticleGroupName");
                emailScheduler.EmailSenderGroupId = dr.Field <int>("EmailSenderGroupId");
                emailScheduler.ScheduleTitle      = dr.Field <string>("ScheduleTitle");
                emailScheduler.ScheduleType       = (ScheduleOccurranceType)dr.Field <int>("ScheduleType");
                emailScheduler.MonthDayInterval   = dr.Field <int?>("MonthDayInterval");
                emailScheduler.WeekDays           = dr.Field <string>("WeekDays");
                emailScheduler.StartDateTime      = dr.Field <DateTime>("StartDateTime");
                emailScheduler.NextRunDateTime    = dr.Field <DateTime>("NextRunDateTime");
                emailScheduler.AllowRepeat        = dr.Field <bool>("AllowRepeat");
                emailScheduler.CreatedOn          = dr.Field <DateTime>("CreatedOn");
                emailScheduler.CreatedBy          = dr.Field <int>("CreatedBy");
                emailScheduler.UpdatedOn          = dr.Field <DateTime>("UpdatedOn");
                emailScheduler.UpdatedBy          = dr.Field <int>("UpdatedBy");
                emailScheduler.UpdatedByUserName  = dr.Field <string>("UpdatedByUserName");


                lstEmailScheduler.Add(emailScheduler);
            }
            return(lstEmailScheduler);
        }
Exemple #2
0
        public void Add(EmailScheduler emailScheduler)
        {
            try
            {
                //string clientName = DataBase.DBService.ExecuteCommandScalar(string.Format(GET_CLIENT_NAME_QUERY,Goals.Pid));

                DataBase.DBService.BeginTransaction();
                int scheduleType = getscheduleType(emailScheduler.ScheduleType);
                DataBase.DBService.ExecuteCommandString(string.Format(INSERT_QUERY,
                                                                      emailScheduler.ArticleGroupId, emailScheduler.EmailSenderGroupId,
                                                                      emailScheduler.ScheduleTitle, scheduleType,
                                                                      emailScheduler.MonthDayInterval, emailScheduler.WeekDays,
                                                                      emailScheduler.StartDateTime.ToString("yyyy-MM-dd hh:mm:ss"),
                                                                      emailScheduler.NextRunDateTime.ToString("yyyy-MM-dd hh:mm:ss"),
                                                                      emailScheduler.AllowRepeat,
                                                                      emailScheduler.CreatedOn.ToString("yyyy-MM-dd hh:mm:ss"),
                                                                      emailScheduler.CreatedBy,
                                                                      emailScheduler.UpdatedOn.ToString("yyyy-MM-dd hh:mm:ss"),
                                                                      emailScheduler.UpdatedBy), true);

                Activity.ActivitiesService.Add(ActivityType.CreateEmailSchedule, EntryStatus.Success,
                                               Source.Server, emailScheduler.UpdatedByUserName, emailScheduler.ScheduleTitle, emailScheduler.MachineName);
                DataBase.DBService.CommitTransaction();
            }
            catch (Exception ex)
            {
                DataBase.DBService.RollbackTransaction();
                StackTrace st = new StackTrace();
                StackFrame sf = st.GetFrame(0);
                MethodBase currentMethodName = sf.GetMethod();
                LogDebug(currentMethodName.Name, ex);
                throw ex;
            }
        }
        //
        // GET: /EmailSchedulers/Details/5


        public ViewResult Details(long id)
        {
            EmailScheduler emailscheduler = unitOfWork.EmailSchedulerRepository.Find(id);

            emailscheduler.ScheduleType = from item in unitOfWork.EmailSchedulerRepository.GetSchedulerTypeAll().Where(p => p.Key == emailscheduler.ScheduleTypeID.ToString())
                                          select new SelectListItem
            {
                Text  = item.Value,
                Value = item.Key
            };
            emailscheduler.SchedulerTitles = from item in unitOfWork.EmailSchedulerRepository.GetSchedulerList().Where(p => p.Key == emailscheduler.SchedulerTitleID.ToString())
                                             select new SelectListItem
            {
                Text  = item.Value,
                Value = item.Key
            };

            emailscheduler.EmailRecipientUsers = from item in unitOfWork.EmailSchedulerRepository.GetRecipientUserTypeAll().Where(p => p.Key == emailscheduler.RecipientUserType.ToString())
                                                 select new SelectListItem
            {
                Text  = item.Value,
                Value = item.Key
            };

            emailscheduler.Days = from item in unitOfWork.EmailSchedulerRepository.GetDaysOfWeek().Where(p => p.Key == emailscheduler.ScheduledDay.ToString())
                                  select new SelectListItem
            {
                Text  = item.Value,
                Value = item.Key
            };


            return(View(emailscheduler));
        }
        public ActionResult Create(EmailScheduler emailscheduler)
        {
            emailscheduler.CreatedBy  = (int)Membership.GetUser(WebSecurity.CurrentUserName).ProviderUserKey;
            emailscheduler.ModifiedBy = (int)Membership.GetUser(WebSecurity.CurrentUserName).ProviderUserKey;
            //timeLog.UserID = (int)Membership.GetUser(WebSecurity.CurrentUserName).ProviderUserKey;
            emailscheduler.CreateDate       = DateTime.Now;
            emailscheduler.ModificationDate = DateTime.Now;
            emailscheduler.IsActive         = true;

            //emailscheduler.ScheduledTime = new TimeSpan(10, 30, 0);

            if (ModelState.IsValid)
            {
                unitOfWork.EmailSchedulerRepository.InsertOrUpdate(emailscheduler);
                unitOfWork.Save();
                //return RedirectToAction("TaskTimeLog", new { @taskId = timeLog.TaskID, @sprintId = timeLog.SprintID });

                //context.EmailSchedulers.Add(emailscheduler);
                //context.SaveChanges();

                return(RedirectToAction("Index"));
            }

            ViewBag.PossibleProjects = unitOfWork.ProjectRepository.All; // context.Projects;
            //return View(emailscheduler);
            return(RedirectToAction("Index"));
        }
        public ActionResult DeleteConfirmed(long id)
        {
            EmailScheduler emailscheduler = unitOfWork.EmailSchedulerRepository.Find(id);

            unitOfWork.EmailSchedulerRepository.Delete(id);
            unitOfWork.Save();
            return(RedirectToAction("Index"));
        }
Exemple #6
0
        protected void Application_Start()
        {
            AreaRegistration.RegisterAllAreas();
            FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
            RouteConfig.RegisterRoutes(RouteTable.Routes);
            BundleConfig.RegisterBundles(BundleTable.Bundles);

            EmailScheduler.Start();
        }
Exemple #7
0
        public void Configuration(IAppBuilder app)
        {
            app.UseWelcomePage("/");
            var config = new HttpConfiguration();

            Configure(config);
            app.UseWebApi(config);
            EmailScheduler.Start();
        }
        static void Main(System.String[] args)
        {
            EmailScheduler.Start();
            TelegramMessageSheduler.Start();
            //779815529:AAEQVsHABl-V1rNhxX3vDnCo_r1xQjYczNU
            //781639864:AAE7Y4gc6ldOYlLGgfsHeaXU2V24QBMXyo0
            _ = new Bot("781639864:AAE7Y4gc6ldOYlLGgfsHeaXU2V24QBMXyo0");

            System.Console.ReadLine();
        }
        protected void Application_Start()
        {
            Mapper.Initialize(c => c.AddProfile <MappingProfile>());
            GlobalConfiguration.Configure(WebApiConfig.Register);
            AreaRegistration.RegisterAllAreas();
            FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
            RouteConfig.RegisterRoutes(RouteTable.Routes);
            BundleConfig.RegisterBundles(BundleTable.Bundles);

            EmailScheduler.Start();
        }
Exemple #10
0
        protected void Application_Start()
        {
            Database.SetInitializer(new AppDbInitializer());
            Database.SetInitializer(new VetDbInitializer());
            AreaRegistration.RegisterAllAreas();
            GlobalConfiguration.Configure(WebApiConfig.Register);
            FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
            RouteConfig.RegisterRoutes(RouteTable.Routes);
            BundleConfig.RegisterBundles(BundleTable.Bundles);

            EmailScheduler.Start();
        }
Exemple #11
0
 public void InsertOrUpdate(EmailScheduler emailscheduler)
 {
     if (emailscheduler.ID == default(long))
     {
         // New entity
         context.EmailSchedulers.Add(emailscheduler);
     }
     else
     {
         // Existing entity
         context.Entry(emailscheduler).State = System.Data.Entity.EntityState.Modified;
     }
 }
Exemple #12
0
        public Result Delete(EmailScheduler emailScheduler)
        {
            var result = new Result();

            try
            {
                EmailScheduleService emailScheduleService = new EmailScheduleService();
                emailScheduleService.Delete(emailScheduler);
                result.IsSuccess = true;
            }
            catch (Exception exception)
            {
                result.IsSuccess     = false;
                result.ExceptionInfo = exception;
            }
            return(result);
        }
Exemple #13
0
        public void TimeoutPromptsMessageSending_Data()
        {
            var bus = MockRepository.GenerateMock <IBus>();

            var sendOneEmailNow = new SendOneEmailNow();

            bus.Expect(b => b.Send(Arg <string> .Is.Anything, Arg <SendOneEmailNow> .Is.NotNull))
            .WhenCalled(i => sendOneEmailNow = (SendOneEmailNow)(i.Arguments[1]));

            var dataId          = Guid.NewGuid();
            var originalMessage = new ScheduleEmailForSendingLater {
                EmailData = new EmailData
                {
                    BodyHtml        = "html",
                    BodyText        = "text",
                    FromAddress     = "from",
                    FromDisplayName = "display",
                    ReplyToAddress  = "replyto",
                    Subject         = "subject",
                    ToAddress       = "to"
                }
            };
            var data = new ScheduledEmailData {
                Id = dataId, OriginalMessageData = new OriginalEmailMessageData(originalMessage)
            };

            var scheduleEmail = new EmailScheduler {
                Bus = bus, Data = data
            };
            var timeoutMessage = new ScheduleEmailTimeout();

            scheduleEmail.Timeout(timeoutMessage);

            Assert.That(sendOneEmailNow.BodyHtml, Is.EqualTo(data.OriginalMessageData.BodyHtml));
            Assert.That(sendOneEmailNow.BodyText, Is.EqualTo(data.OriginalMessageData.BodyText));
            Assert.That(sendOneEmailNow.FromAddress, Is.EqualTo(data.OriginalMessageData.FromAddress));
            Assert.That(sendOneEmailNow.FromDisplayName, Is.EqualTo(data.OriginalMessageData.FromDisplayName));
            Assert.That(sendOneEmailNow.ReplyToAddress, Is.EqualTo(data.OriginalMessageData.ReplyToAddress));
            Assert.That(sendOneEmailNow.Subject, Is.EqualTo(data.OriginalMessageData.Subject));
            Assert.That(sendOneEmailNow.ToAddress, Is.EqualTo(data.OriginalMessageData.ToAddress));
            Assert.That(sendOneEmailNow.Username, Is.EqualTo(data.OriginalMessageData.Username));
            Assert.That(sendOneEmailNow.CorrelationId, Is.EqualTo(data.Id));

            bus.VerifyAllExpectations();
        }
        //
        // GET: /EmailSchedulers/Edit/5

        public ActionResult Edit(long id)
        {
            EmailScheduler emailscheduler = unitOfWork.EmailSchedulerRepository.Find(id);

            emailscheduler.SchedulerTitles = from item in unitOfWork.EmailSchedulerRepository.GetSchedulerList()
                                             select new SelectListItem
            {
                Text  = item.Value,
                Value = item.Key
            };

            emailscheduler.ScheduleType = from item in unitOfWork.EmailSchedulerRepository.GetSchedulerTypeAll()
                                          select new SelectListItem
            {
                Text  = item.Value,
                Value = item.Key
            };

            var recipientTypes = unitOfWork.EmailSchedulerRepository.GetRecipientUserTypeAll();

            //new Dictionary<string, string> {{ "0", "--- Select recipient users ---" },
            //{ "1", "Task's Users" },
            //{ "2", "Task's Followers" },
            //{ "3", "Task's Users & Followers" },
            // { "4", "Project's Users" }};

            emailscheduler.EmailRecipientUsers = from item in recipientTypes
                                                 select new SelectListItem
            {
                Text  = item.Value,
                Value = item.Key
            };

            emailscheduler.Days = from item in unitOfWork.EmailSchedulerRepository.GetDaysOfWeek()
                                  select new SelectListItem
            {
                Text  = item.Value,
                Value = item.Key
            };
            ViewBag.PossibleProjects = unitOfWork.ProjectRepository.All;

            return(View(emailscheduler));
        }
Exemple #15
0
 void serviceTimer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
 {
     try
     {
         if (!this._serviceCheckInProgress)
         {
             this._serviceCheckInProgress = true;
             this.LogMessage("Email sending Started");
             EmailScheduler.SendEmail();
             this.LogMessage("Email sent end");
             this._serviceCheckInProgress = false;
         }
     }
     catch (Exception ex)
     {
         this._serviceCheckInProgress = false;
         this.LogMessage(ex.Message + Environment.NewLine + ex.StackTrace + (ex.InnerException == null ? string.Empty : ex.InnerException.Message + Environment.NewLine + ex.InnerException.StackTrace));
     }
 }
        public ActionResult Edit(EmailScheduler emailscheduler)
        {
            emailscheduler.ModifiedBy       = (int)Membership.GetUser().ProviderUserKey;
            emailscheduler.ModificationDate = DateTime.Now;

            if (ModelState.IsValid)
            {
                unitOfWork.EmailSchedulerRepository.InsertOrUpdate(emailscheduler);
                unitOfWork.Save();
                return(RedirectToAction("Index"));
                //context.Entry(emailscheduler).State = System.Data.Entity.EntityState.Modified;
                //context.SaveChanges();
                //return RedirectToAction("Index");
            }

            ViewBag.PossibleProjects = unitOfWork.ProjectRepository.All;
            //ViewBag.PossibleProjects = context.Projects;
            return(View(emailscheduler));
        }
        //
        // GET: /EmailSchedulers/Delete/5

        public ActionResult Delete(long id)
        {
            EmailScheduler emailscheduler = unitOfWork.EmailSchedulerRepository.Find(id);

            emailscheduler.SchedulerTitles = from item in unitOfWork.EmailSchedulerRepository.GetSchedulerList().Where(p => p.Key == emailscheduler.SchedulerTitleID.ToString())
                                             select new SelectListItem
            {
                Text  = item.Value,
                Value = item.Key
            };
            emailscheduler.ScheduleType = from item in unitOfWork.EmailSchedulerRepository.GetSchedulerTypeAll().Where(p => p.Key == emailscheduler.ScheduleTypeID.ToString())
                                          select new SelectListItem
            {
                Text  = item.Value,
                Value = item.Key
            };


            return(View(emailscheduler));
        }
Exemple #18
0
        public void TimeoutSendingPausedNoAction_Data()
        {
            var bus = MockRepository.GenerateStrictMock <IBus>();

            var dataId          = Guid.NewGuid();
            var originalMessage = new ScheduleEmailForSendingLater {
                EmailData = new EmailData()
            };
            var data = new ScheduledEmailData {
                Id = dataId, OriginalMessageData = new OriginalEmailMessageData(originalMessage), SchedulingPaused = true
            };

            var scheduleEmail = new EmailScheduler {
                Bus = bus, Data = data
            };
            var timeoutMessage = new ScheduleEmailTimeout();

            scheduleEmail.Timeout(timeoutMessage);

            bus.VerifyAllExpectations();
        }
Exemple #19
0
        public void Delete(EmailScheduler emailScheduler)
        {
            try
            {
                //string clientName = DataBase.DBService.ExecuteCommandScalar(string.Format(GET_CLIENT_NAME_QUERY,Goals.Pid));

                DataBase.DBService.BeginTransaction();
                int scheduleType = getscheduleType(emailScheduler.ScheduleType);
                DataBase.DBService.ExecuteCommandString(string.Format(DELETE_QUERY, emailScheduler.ID), true);

                Activity.ActivitiesService.Add(ActivityType.DeleteEmailSchedule, EntryStatus.Success,
                                               Source.Server, emailScheduler.UpdatedByUserName, emailScheduler.ScheduleTitle, emailScheduler.MachineName);
                DataBase.DBService.CommitTransaction();
            }
            catch (Exception ex)
            {
                DataBase.DBService.RollbackTransaction();
                StackTrace st = new StackTrace();
                StackFrame sf = st.GetFrame(0);
                MethodBase currentMethodName = sf.GetMethod();
                LogDebug(currentMethodName.Name, ex);
                throw ex;
            }
        }
        /*
         * Send a daily Task Status email to each user having tasks in projects, that are part of Sprints.
         * It should be sent on a specific time setat the project level.
         */
        public List <Mailer> DailyTaskStatus(EmailScheduler objEmailScheduler)
        {
            List <Mailer> mailerList = new List <Mailer>();
            List <Task>   taskList   = unitofWork.TaskRepository.AllIncludingForMail().Where(t => t.ProjectStatus.Name.ToLower() != "closed").ToList();
            //List<UserProfile> userList = unitofWork.UserRepository.All();

            //string emailbody = "style=\".emailTbl {border: 1px solid #000000;border-radius: 5px;margin: 0;padding: 0;width: 574px;-moz-border-radius-bottomleft:5px;-webkit-border-bottom-left-radius:5px;border-bottom-left-radius:5px;-moz-border-radius-bottomright:5px;-webkit-border-bottom-right-radius:5px;border-bottom-right-radius:5px;-moz-border-radius-topright:5px;-webkit-border-top-right-radius:5px;border-top-right-radius:5px;-moz-border-radius-topleft:5px;-webkit-border-top-left-radius:5px;border-top-left-radius:5px;}.emailTbl table{border-collapse: collapse;border-spacing: 0;width:100%;margin:0px;padding:0px;}.emailTbl tr:last-child td:last-child {-moz-border-radius-bottomright:5px;-webkit-border-bottom-right-radius:5px;border-bottom-right-radius:5px;}.emailTbl table tr:first-child td:first-child {-moz-border-radius-topleft:5px;-webkit-border-top-left-radius:5px;border-top-left-radius:5px;}.emailTbl table tr:first-child td:last-child {-moz-border-radius-topright:5px;-webkit-border-top-right-radius:5px;border-top-right-radius:5px;}.emailTbl tr:last-child td:first-child{-moz-border-radius-bottomleft:5px;-webkit-border-bottom-left-radius:5px;border-bottom-left-radius:5px;}.emailTbl tr:hover td{}.emailTbl tr:nth-child(odd){ background-color:#e8edff; }.emailTbl tr:nth-child(even){background-color:#ffffff; }.emailTbl td{vertical-align:middle;border:1px solid #000000;border-width:0px 1px 1px 0px;text-align:left;padding:9px;font-size:12px;font-family:Arial;font-weight:normal;color:#000000;}.emailTbl tr:last-child td{border-width:0px 1px 0px 0px;}.emailTbl tr td:last-child{border-width:0px 0px 1px 0px;}.emailTbl tr:last-child td:last-child{border-width:0px 0px 0px 0px;}.emailTbl tr:first-child td{background:-o-linear-gradient(bottom, #b9c9fe 5%, #b9c9fe 100%);	background:-webkit-gradient( linear, left top, left bottom, color-stop(0.05, #b9c9fe), color-stop(1, #b9c9fe) );background:-moz-linear-gradient( center top, #b9c9fe 5%, #b9c9fe 100% );filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#b9c9fe,endColorstr=#b9c9fe);	background: -o-linear-gradient(top,#b9c9fe,b9c9fe);background-color:#b9c9fe;border:0px solid #000000;text-align:center;border-width:0px 0px 1px 1px;font-size:14px;font-family:Arial;font-weight:bold;color:#000000;}.emailTbl tr:first-child:hover td{background:-o-linear-gradient(bottom, #b9c9fe 5%, #b9c9fe 100%);	background:-webkit-gradient( linear, left top, left bottom, color-stop(0.05, #b9c9fe), color-stop(1, #b9c9fe) );background:-moz-linear-gradient( center top, #b9c9fe 5%, #b9c9fe 100% );filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#b9c9fe, endColorstr=#b9c9fe);	background: -o-linear-gradient(top,#b9c9fe,b9c9fe);background-color:#b9c9fe;}.emailTbl tr:first-child td:first-child{border-width:0px 0px 1px 0px;}.emailTbl tr:first-child td:last-child{border-width:0px 0px 1px 1px;}\"";
            //string styleTable     = "style=\"border-collapse: collapse;border-spacing: 0;width: 100%;margin: 0;padding: 0\"";
            //string styleTableRow  = "style=\"background-color: #fff\"";
            //string styleTableData = "style=\"vertical-align: middle;border: 1px solid #000;border-width: 0 1px 1px 0;text-align: left;padding: 9px;font-size: 12px;font-family: Arial;font-weight: normal;color: #000\"";

            List <UserProfile> userList = new List <UserProfile>();

            if (objEmailScheduler.RecipientUserType.Value == 1)             //Task's user
            {
                List <UserProfile> userListByProject = GetAllUserByProjectId(objEmailScheduler.ProjectID);
                userList = userListByProject;
            }
            else if (objEmailScheduler.RecipientUserType.Value == 2)       // Task's Followers
            {
                List <UserProfile> userListByProject = GetAllUserByProjectId(objEmailScheduler.ProjectID);
                userList = userListByProject;
            }
            else if (objEmailScheduler.RecipientUserType.Value == 3)        //Task's Users & Followers
            {
                List <UserProfile> userListByProject = GetAllUserByProjectId(objEmailScheduler.ProjectID);
                userList = userListByProject;
            }
            else if (objEmailScheduler.RecipientUserType.Value == 4)        //Task's Creator & Followers
            {
                List <UserProfile> userListByProject = GetAllUserByProjectId(objEmailScheduler.ProjectID);
                userList = userListByProject;
            }
            else if (objEmailScheduler.RecipientUserType.Value == 5)        //Project's Users
            {
                List <UserProfile> userListByProject = GetAllUserByProjectId(objEmailScheduler.ProjectID);
                userList = userListByProject;
            }

            else if (objEmailScheduler.RecipientUserType.Value == 6)        //Task's Creator & Users
            {
                List <UserProfile> userListByProject = GetAllUserByProjectId(objEmailScheduler.ProjectID);
                userList = userListByProject;
            }

            else if (objEmailScheduler.RecipientUserType.Value == 7)        //Task's Creator & Users
            {
                List <UserProfile> userListByProject = GetAllUserByProjectId(objEmailScheduler.ProjectID);
                userList = userListByProject;
            }


            string styleTableHeader = "style= \"background-color:#0094ff; border:1px solid;\"";
            string styleGroupbyRow  = "style= \"background-color:#57C0E1;\"";
            string styleTaskRow     = "style= \"background-color:#A0D0FF;\"";

            foreach (UserProfile objOfuser in userList)
            {
                string      messageBody  = string.Empty;
                List <Task> userTaskList = new List <Task>();

                if (objEmailScheduler.RecipientUserType.Value == 1)  //Task's user
                {
                    userTaskList = taskList.Where(a => a.Users.Any(b => b.UserId == objOfuser.UserId) && a.ProjectID == objEmailScheduler.ProjectID).ToList();
                }

                else if (objEmailScheduler.RecipientUserType.Value == 2)// Task's Followers
                {
                    userTaskList = taskList.Where(a => a.Followers.Any(b => b.UserId == objOfuser.UserId) && a.ProjectID == objEmailScheduler.ProjectID).ToList();
                }

                else if (objEmailScheduler.RecipientUserType.Value == 3) //Task's Users & Followers
                {
                    userTaskList = taskList.Where(a => a.Followers.Any(b => b.UserId == objOfuser.UserId && a.ProjectID == objEmailScheduler.ProjectID) || (a.Users.Any(c => c.UserId == objOfuser.UserId && a.ProjectID == objEmailScheduler.ProjectID))).ToList();
                }
                else if (objEmailScheduler.RecipientUserType.Value == 4) //Task's Creator & Followers
                {
                    userTaskList = taskList.Where((a => a.CreatedBy == objOfuser.UserId && a.ProjectID == objEmailScheduler.ProjectID || a.Followers.Any(b => b.UserId == objOfuser.UserId && a.ProjectID == objEmailScheduler.ProjectID))).ToList();
                }

                else if (objEmailScheduler.RecipientUserType.Value == 5) //Project's Users
                {
                    List <Task> tasklist = unitofWork.TaskRepository.AllTaskByIndividalProject(objEmailScheduler.ProjectID);
                    userTaskList = tasklist.Where(a => a.Users.Any(b => b.UserId == objOfuser.UserId)).ToList();
                }
                else if (objEmailScheduler.RecipientUserType.Value == 6) //Task's Creator & Users
                {
                    userTaskList = taskList.Where((a => a.CreatedByUser == objOfuser && a.ProjectID == objEmailScheduler.ProjectID || a.Users.Any(b => b.UserId == objOfuser.UserId && a.ProjectID == objEmailScheduler.ProjectID))).ToList();
                }

                else if (objEmailScheduler.RecipientUserType.Value == 7) //Task's Creator
                {
                    userTaskList = taskList.Where(a => a.CreatedBy == objOfuser.UserId && a.ProjectID == objEmailScheduler.ProjectID).ToList();
                }


                //taskList.Where(a => a.Users.Any(b => b.UserId == objOfuser.UserId) && a.ProjectID == objEmailScheduler.ProjectID).ToList();

                if (userTaskList.Count > 0)
                {
                    messageBody = "<b>Dear &nbsp;" + objOfuser.FirstName + "</b>,<br>" + "<b>Your Daily Tasks Status are given below</b><br>";

                    messageBody += "<table><tr " + styleTableHeader + "><th>Task ID</th> <th>Task Title</th> <th>Task Status</th> <th>Project</th></tr>";

                    foreach (var task in userTaskList)
                    {
                        messageBody += "<tr> ";
                        messageBody += "<td " + styleTaskRow + "> " + task.TaskUID + "</td>";
                        messageBody += "<td " + styleGroupbyRow + "> " + task.Title + "</td>";
                        messageBody += "<td " + styleGroupbyRow + "> " + ((task.ProjectStatus == null) ? " " : task.ProjectStatus.Name) + "</td>";
                        messageBody += "<td " + styleGroupbyRow + "> " + task.Project.Name + "</td>";
                        messageBody += "</tr>";
                    }

                    messageBody += "</table></div><br /><div style='float:left;'><p>We sent you this email because you signed up in PMTool and tasks are assigned to you. <br /> Please don't reply To this mail.</p><p>"
                                   + "Regards,<br />PMTool</p></div>";

                    Mailer mailer = new Mailer();
                    mailer.UseMailID    = objOfuser.UserName;
                    mailer.MailSubject  = "Daily Task Status";
                    mailer.HtmlMailBody = messageBody;
                    mailerList.Add(mailer);
                }
            }

            return(mailerList);
        }
        public void TimeoutSendingPausedNoAction_Data()
        {
            var bus = MockRepository.GenerateStrictMock<IBus>();

            var dataId = Guid.NewGuid();
            var originalMessage = new ScheduleEmailForSendingLater { EmailData = new EmailData()};
            var data = new ScheduledEmailData { Id = dataId, OriginalMessageData = new OriginalEmailMessageData(originalMessage), SchedulingPaused = true };

            var scheduleEmail = new EmailScheduler { Bus = bus, Data = data };
            var timeoutMessage = new ScheduleEmailTimeout();
            scheduleEmail.Timeout(timeoutMessage);

            bus.VerifyAllExpectations();
        }
        public void TimeoutPromptsMessageSending_Data()
        {
            var bus = MockRepository.GenerateMock<IBus>();

            var sendOneEmailNow = new SendOneEmailNow();
            bus.Expect(b => b.Send(Arg<string>.Is.Anything, Arg<SendOneEmailNow>.Is.NotNull))
               .WhenCalled(i => sendOneEmailNow = (SendOneEmailNow)(i.Arguments[1]));

            var dataId = Guid.NewGuid();
            var originalMessage = new ScheduleEmailForSendingLater { EmailData = new EmailData
                {
                    BodyHtml = "html",
                    BodyText = "text",
                    FromAddress = "from",
                    FromDisplayName = "display",
                    ReplyToAddress = "replyto",
                    Subject = "subject",
                    ToAddress = "to"
                }};
            var data = new ScheduledEmailData { Id = dataId, OriginalMessageData = new OriginalEmailMessageData(originalMessage) };

            var scheduleEmail = new EmailScheduler { Bus = bus, Data = data };
            var timeoutMessage = new ScheduleEmailTimeout();
            scheduleEmail.Timeout(timeoutMessage);

            Assert.That(sendOneEmailNow.BodyHtml, Is.EqualTo(data.OriginalMessageData.BodyHtml));
            Assert.That(sendOneEmailNow.BodyText, Is.EqualTo(data.OriginalMessageData.BodyText));
            Assert.That(sendOneEmailNow.FromAddress, Is.EqualTo(data.OriginalMessageData.FromAddress));
            Assert.That(sendOneEmailNow.FromDisplayName, Is.EqualTo(data.OriginalMessageData.FromDisplayName));
            Assert.That(sendOneEmailNow.ReplyToAddress, Is.EqualTo(data.OriginalMessageData.ReplyToAddress));
            Assert.That(sendOneEmailNow.Subject, Is.EqualTo(data.OriginalMessageData.Subject));
            Assert.That(sendOneEmailNow.ToAddress, Is.EqualTo(data.OriginalMessageData.ToAddress));
            Assert.That(sendOneEmailNow.Username, Is.EqualTo(data.OriginalMessageData.Username));
            Assert.That(sendOneEmailNow.CorrelationId, Is.EqualTo(data.Id));

            bus.VerifyAllExpectations();
        }
        //
        // GET: /EmailSchedulers/Create

        public ActionResult Create()
        {
            ViewBag.PossibleProjects = unitOfWork.ProjectRepository.All; //context.Projects;
            EmailScheduler emailScheduler = new EmailScheduler();

            //IEnumerable<ScheduleType> scheduleTypes = Enum.GetValues(typeof(ScheduleType)).Cast<ScheduleType>();

            emailScheduler.SchedulerTitles = from item in unitOfWork.EmailSchedulerRepository.GetSchedulerList()
                                             select new SelectListItem
            {
                Text  = item.Value,
                Value = item.Key
            };

            emailScheduler.ScheduleType = from item in unitOfWork.EmailSchedulerRepository.GetSchedulerTypeAll()
                                          select new SelectListItem
            {
                Text  = item.Value,
                Value = item.Key
            };

            var recipientTypes = unitOfWork.EmailSchedulerRepository.GetRecipientUserTypeAll();

            //new Dictionary<string, string> {{ "0", "--- Select recipient users ---" },
            //{ "1", "Task's Users" },
            //{ "2", "Task's Followers" },
            //{ "3", "Task's Users & Followers" },
            // { "4", "Project's Users" }};

            emailScheduler.EmailRecipientUsers = from item in recipientTypes
                                                 select new SelectListItem
            {
                Text  = item.Value,
                Value = item.Key
            };

            emailScheduler.Days = from item in unitOfWork.EmailSchedulerRepository.GetDaysOfWeek()
                                  select new SelectListItem
            {
                Text  = item.Value,
                Value = item.Key
            };

            //IEnumerable<Week> days = Enum.GetValues(typeof(Week)).Cast<Week>();
            //emailScheduler.Days = from action in days
            //                      select new SelectListItem
            //                      {
            //                          Text = action.ToString(),
            //                          Value = ((int)action).ToString()
            //                      };

            //emailScheduler.ScheduledTime = new TimeSpan(11, 30, 0);

            //emailScheduler.ScheduledTime = new TimeSpan(15, 30, 0);

            emailScheduler.ScheduledDate = DateTime.Today;

            //String testDt = DateTime.Now.ToShortTimeString();

            //String testDt = DateTime.Now.ToString("hh:mm tt");

            //emailScheduler.ScheduledTime = Convert.ToDateTime(DateTime.Now.ToString("hh:mm tt"));

            emailScheduler.ScheduledTime = DateTime.Now.ToString("hh:mm tt");

            return(View(emailScheduler));
        }
Exemple #24
0
 public MailerService()
 {
     InitializeComponent();
     _mailer = EmailScheduler.GetMailer();
 }
        [Route("api/message/update")] // webhook uri api
        public async Task <IHttpActionResult> Update([FromBody] Update update)
        {
            var client = await Bot.Get();

            var message = update.Message;

            try
            {
                if (update.Message.Type == MessageType.TextMessage)
                {
                    await client.SendTextMessageAsync(message.Chat.Id, "HI");

                    await client.SendTextMessageAsync(message.Chat.Id, message.Text);

                    if (message.Text == "time")
                    {
                        //long id = message.Chat.Id;
                        //System.Timers.Timer t = new System.Timers.Timer(5000);
                        //t.Elapsed += async (s, e) =>
                        //{
                        //    await client.SendTextMessageAsync(id, DateTime.Now.ToShortTimeString());
                        //};
                        //t.Start();
                        ////Bot.timers.Add(new System.Timers.Timer());
                        Bot.Id = message.Chat.Id;
                        Bot.SchedulerStartTime = DateTime.Now;
                        // запуск выполнения работы
                        EmailScheduler.Start();
                    }
                }

                switch (update.Type)
                {
                case UpdateType.UnknownUpdate:
                    await client.SendTextMessageAsync(message.Chat.Id, update.Type.ToString());

                    break;

                case UpdateType.MessageUpdate:
                    if (message.Text.StartsWith("/"))
                    {
                        await client.SendChatActionAsync(message.Chat.Id, ChatAction.Typing);

                        InlineKeyboardButton[][] k = new InlineKeyboardButton[][] { new InlineKeyboardButton[] { } };
                        var keyboard1 = new InlineKeyboardMarkup(k);


                        //var keyboard = new InlineKeyboardMarkup(new[]
                        //             {
                        //        new[]
                        //        {

                        //            new InlineKeyboardButton{ Text="1.1", Url="https://vk.com/" },
                        //            new InlineKeyboardButton{ Text="1.2", SwitchInlineQuery = "1.2" },
                        //        },
                        //        new[]
                        //        {
                        //            new InlineKeyboardButton{ Text="2.1", CallbackData="he" },
                        //            new InlineKeyboardButton{ Text="2.2", SwitchInlineQuery ="2.2" },
                        //        }
                        //    });
                        await Task.Delay(500);

                        await client.SendTextMessageAsync(message.Chat.Id, "Choose", replyMarkup : keyboard1);
                    }
                    await client.SendTextMessageAsync(message.Chat.Id, update.Type.ToString());

                    break;

                case UpdateType.InlineQueryUpdate:
                    await client.SendTextMessageAsync(message.Chat.Id, update.Type.ToString());

                    break;

                case UpdateType.ChosenInlineResultUpdate:
                    await client.SendTextMessageAsync(message.Chat.Id, update.Type.ToString());

                    break;

                case UpdateType.CallbackQueryUpdate:
                    await client.EditMessageTextAsync(update.CallbackQuery.Message.Chat.Id, update.CallbackQuery.Message.MessageId, "test");

                    await client.SendTextMessageAsync(message.Chat.Id, update.Type.ToString());

                    break;

                case UpdateType.EditedMessage:
                    await client.SendTextMessageAsync(message.Chat.Id, update.Type.ToString());

                    break;

                default:
                    await client.SendTextMessageAsync(message.Chat.Id, update.Type.ToString());

                    break;
                }
            }
            catch (Exception ex)
            {
                await client.SendTextMessageAsync(message.Chat.Id, ex.ToString());
            }

            return(Ok());
        }