示例#1
0
        public bool SendDailyMail(DateTime date, string office)
        {
            UserApplication userApp = new UserApplication();
            // sunneters
            List <UsersEntity> allUsers         = userApp.GetActiveUserList().FindAll(u => u.Role != RolesEnum.CLIENT && u.IsNotice);
            List <UsersEntity> currentUsers     = allUsers.FindAll(u => u.Office.ToUpper() == office.ToUpper());
            List <UsersEntity> noSubmittedUsers = new List <UsersEntity>();

            TimeSheetApplication    tsApp   = new TimeSheetApplication();
            SearchTimeSheetsRequest request = new SearchTimeSheetsRequest(SearchType.EmailNotice,
                                                                          false, "ModifiedOn", "ASC");

            request.Office     = office;
            request.SearchDate = date;
            SearchTimeSheetsResponse response = tsApp.QueryTimesheet(request);

            if (response.IsError)
            {
                WebLogAgent.Write("SunNet.PMNew.Web.Codes.EmailExecuter.SendDailyMail:136,GetDataError");
                return(false);
            }

            StringBuilder ticketHtml = new StringBuilder();

            StringBuilder usersTickets = new StringBuilder();

            if (response.TimeSheetsList.Count == 0)
            {
                // no timesheet,clear htmlTemplate nodes
                string emptyTmeplate = UserFirstRowSection;
                emptyTmeplate = UserContentSection;
            }
            foreach (UsersEntity user in currentUsers)
            {
                List <TimeSheetTicket> userTickets = response.TimeSheetsList.FindAll(tts => tts.UserID == user.ID);
                if (userTickets == null || userTickets.Count == 0)
                {
                    noSubmittedUsers.Add(user);

                    continue;
                }
                else
                {
                    usersTickets.Append(GetUserTicketsHtml(user, userTickets));
                }
            }
            ticketHtml.Append(GetDateSectionHtml(date, response.TimeSheetsList.Count + noSubmittedUsers.Count + 1));
            ticketHtml.Append(usersTickets);
            ticketHtml.Append(GetUserNoTicketsHtml(noSubmittedUsers));
            // 不需要没有写的汇总了,因为另一封已经包含了。
            //SendNoSubmitEmail(noSubmittedUsers, date);

            foreach (UsersEntity user in noSubmittedUsers)
            {
                SendNoticeToUser(user, date);
            }

            SendSubmittedEmail(ticketHtml.ToString(), date);
            return(true);
        }
示例#2
0
        public bool SendWeekPlanMail(string office)
        {
            WeekPlanApplication weekPlanApplication        = new WeekPlanApplication();
            UserApplication     userApp                    = new UserApplication();
            List <UsersEntity>  usersHavenotSubmitWeekPlan = new List <UsersEntity>();
            List <UsersEntity>  allUsers                   = userApp.GetActiveUserList().FindAll(u => u.Role != RolesEnum.CLIENT && u.IsNotice);
            List <UsersEntity>  currentUsers               = allUsers.FindAll(u => u.Office.ToUpper() == office.ToUpper());
            DateTime            weekDay                    = DateTime.Now;

            if (weekDay.DayOfWeek != DayOfWeek.Sunday)
            {
                weekDay = weekDay.AddDays(-(int)DateTime.Now.DayOfWeek).AddDays(7);
            }

            foreach (UsersEntity user in currentUsers)
            {
                WeekPlanEntity weekPlanEntity = weekPlanApplication.GetInfo(user.UserID, weekDay);
                if (weekPlanEntity == null)
                {
                    usersHavenotSubmitWeekPlan.Add(user);
                }
            }

            SendWeekPlanMail(usersHavenotSubmitWeekPlan, weekDay.Date);
            return(true);
        }
示例#3
0
        public void SetEstimation(TicketUsersEntity ticketUsersEntity)
        {
            if ((int)ticketsEntity.Status > (int)TicketsState.PM_Reviewed && ticketsEntity.EsUserID > 0)
            {
                ltrlEstimationUser.Text = userApp.GetUser(ticketsEntity.EsUserID).FirstAndLastName;
            }
            else
            {
                ltrlEstimationUser.Text = UserInfo.FirstAndLastName;
            }

            List <UsersEntity> listUsers = userApp.GetActiveUserList().FindAll(u => u.UserType == "CLIENT" && u.CompanyID == ticketsEntity.CompanyID)
                                           .OrderBy(r => r.FirstName).ToList();

            foreach (UsersEntity u in listUsers)
            {
                ddlConfirmEstmateUserId.Items.Add(new ListItem()
                {
                    Value = u.UserID.ToString(), Text = string.Format("{0}({1})", u.FirstAndLastName, u.Role)
                });
            }

            if (ticketsEntity.ConfirmEstmateUserId > 0)
            {
                ListItem li = ddlConfirmEstmateUserId.Items.FindByValue(ticketsEntity.ConfirmEstmateUserId.ToString());
                if (li != null)
                {
                    li.Selected = true;
                }
            }

            txtInitialTime.Text        = ticketsEntity.InitialTime.ToString("N");
            txtBoxExtimationHours.Text = ticketsEntity.FinalTime.ToString("N");
        }
示例#4
0
        private void InitUsers(int companyId)
        {
            List <UsersEntity> listCurrentProject = GetAllProjectUsers();
            var projectId = QS("ID", 0);
            List <UsersEntity> listUsers = userApp.GetActiveUserList().FindAll(u => u.UserType == "SUNNET" ||
                                                                               (u.UserType == "CLIENT" && u.CompanyID == companyId));

            var tmpList = listUsers.Select(x => new
            {
                x.ID,
                ProjectID = projectId,
                x.FirstName,
                x.LastName,
                x.FirstAndLastName,
                x.LastNameAndFirst,
                Selected = listCurrentProject.Any(r => r.UserID == x.ID),
                x.Role
            }).ToList();

            rptDev.DataSource = tmpList.FindAll(r => r.Role == RolesEnum.DEV || r.Role == RolesEnum.Leader ||
                                                r.Role == RolesEnum.Contactor).OrderBy(r => r.FirstName);
            rptDev.DataBind();

            rptQA.DataSource = tmpList.FindAll(r => r.Role == RolesEnum.QA).OrderBy(r => r.FirstName);
            rptQA.DataBind();

            rptUS.DataSource = tmpList.FindAll(r => r.Role == RolesEnum.ADMIN || r.Role == RolesEnum.PM ||
                                               r.Role == RolesEnum.Sales || r.Role == RolesEnum.Supervisor).OrderBy(r => r.FirstName);
            rptUS.DataBind();

            rptClient.DataSource = tmpList.FindAll(r => r.Role == RolesEnum.CLIENT).OrderBy(r => r.FirstName);
            rptClient.DataBind();
        }
示例#5
0
        public bool ReminderAll()
        {
            if (IsCanRun())
            {
                //插入一条新同步记录
                ReminderHistoryModel historyModel = IniReminderHistory();


                //所有用户提醒
                var users = _usersApp.GetActiveUserList();
                foreach (var user in users)
                {
                    //每用户提醒
                    ReminderByUser(user);
                }

                //更新同步记录
                historyModel.RunEndTime = DateTime.Now;
                historyModel.State      = ReminderStateEnum.Succeed;
                _historyManager.UpdateModel(historyModel);
            }

            return(true);
        }