示例#1
0
        public bool UpdateTicketStatusToApprove(int ticketID)
        {
            try
            {
                if (UserInfo.UserID <= 0)
                {
                    return(false);
                }
                TicketsEntity ticketEntity   = ticketAPP.GetTickets(ticketID);
                TicketsState  originalStatus = ticketEntity.Status;
                bool          Update         = true;
                ticketEntity.Status      = TicketsState.Completed;
                ticketEntity.ModifiedOn  = DateTime.Now;
                ticketEntity.ModifiedBy  = UserInfo.UserID;
                ticketEntity.PublishDate = DateTime.Now.Date;
                Update = ticketAPP.UpdateTickets(ticketEntity);

                // 完成时更新所有相关人员的WorkingOn状态
                ticketAPP.UpdateWorkingOnStatus(ticketID, TicketsState.Completed);
                return(Update);
            }
            catch (Exception ex)
            {
                WebLogAgent.Write(string.Format("Error Ashx:DoUpdateTicketStatus.ashx Messages:\r\n{0}", ex));
                return(false);
            }
        }
示例#2
0
        public List <TicketsEntity> GetAllRelation(int wid)
        {
            List <string> listR = new List <string>();

            StringBuilder strSql = new StringBuilder();

            strSql.Append(@"WITH Tickets AS (SELECT * FROM DBO.GetTicketsView(@UserId))
                            select * from Tickets where ticketid in
                            (select tid from ProposalTrackerRelation where wid =@wid)");
            List <TicketsEntity> list = new List <TicketsEntity>();
            Database             db   = DatabaseFactory.CreateDatabase();

            using (DbCommand dbCommand = db.GetSqlStringCommand(strSql.ToString()))
            {
                try
                {
                    db.AddInParameter(dbCommand, "wid", DbType.Int32, wid);
                    db.AddInParameter(dbCommand, "UserId", DbType.Int32, IdentityContext.UserID);
                    using (IDataReader dataReader = db.ExecuteReader(dbCommand))
                        while (dataReader.Read())
                        {
                            list.Add(TicketsEntity.ReaderBind(dataReader, false));
                        }
                }
                catch (Exception ex)
                {
                    WebLogAgent.Write(string.Format("[SQLText:{0},{1}Messages:\r\n{2}]"
                                                    , strSql.ToString(), base.FormatParameters(dbCommand.Parameters), ex.Message));
                    return(null);
                }
            }
            return(list);
        }
示例#3
0
 private void BindDataModel(TicketsEntity info)
 {
     this.TicketID     = info.TicketID;
     this.ProjectId    = info.ProjectID.ToString();
     this.Url          = info.URL;
     this.Descr        = Server.HtmlDecode(info.FullDescription);
     this.Title        = Server.HtmlDecode(info.Title);
     this.BugType      = info.TicketType.GetHashCode();
     this.CheckEn      = info.IsEstimates;
     this.Priority     = info.Priority.GetHashCode();
     this.startDate    = info.StartDate <= UtilFactory.Helpers.CommonHelper.GetDefaultMinDate() ? "" : info.StartDate.ToString("MM/dd/yyyy");
     this.DeliveryDate = info.DeliveryDate <= UtilFactory.Helpers.CommonHelper.GetDefaultMinDate() ? "" : info.DeliveryDate.ToString("MM/dd/yyyy");
     this.lilImageList = fileList(info.TicketID, info.Status);
     if ((UserInfo.Role == RolesEnum.Leader || UserInfo.Role == RolesEnum.PM))
     {
         selectStatus.Visible = true;
         if (info.Status != TicketsState.Draft && info.Status != TicketsState.Submitted && info.Status != TicketsState.Wait_PM_Feedback)
         {
             selectStatus.Items.FindByValue(((int)info.Status).ToString()).Selected = true;
         }
         btnChangeInternalStatus.Visible = true;
     }
     else
     {
         selectStatus.Visible            = false;
         btnChangeInternalStatus.Visible = false;
     }
 }
示例#4
0
 private void ShowAssginUsers(TicketsEntity TicketsEntityInfo)
 {
     if (IsSunnet == "true" && TicketsEntityInfo == null)
     {
         this.trAssignUser.Visible = true;
     }
 }
示例#5
0
 private void HideControlByStatus(TicketsEntity entity)
 {
     if (entity.Status == TicketsState.Completed)
     {
         isShowRating = true;
     }
 }
示例#6
0
        /// <summary>
        /// 发邮件给创建者,请他确认ticket
        /// </summary>
        /// <param name="fe"></param>
        public void SendEmailtoCreate(TicketsEntity ticketEntity, UsersEntity userEntity)
        {
            //string contentTemplete = GetEmailExecuter("SendEmailForReadyforReview.txt");
            //string from = Config.DefaultSendEmail;
            string to = userApp.GetUser(ticketEntity.CreatedBy).Email;

            //string subject = string.Format("{0}  ticket {1} is complete. Please review.", GetProjectTitleByPid(ticketEntity.ProjectID), ticketEntity.TicketID);
            //string content = string.Empty;

            //xml 发送邮件
            XElement xmlInvoice1 = XElement.Load(System.AppDomain.CurrentDomain.SetupInformation.ApplicationBase + "Template/SendEmailForReadyforReview.xml");

            emailBody    = xmlInvoice1.Element("email").Elements("content").First().Value;
            emailSubject = xmlInvoice1.Element("email").Elements("subject").First().Value.Replace("{ProjectTitle}", ticketEntity.ProjectTitle);
            emailBody    = emailBody.Replace("{TicketID}", ticketEntity.TicketID.ToString())
                           .Replace("{TicketTitle}", ticketEntity.Title)
                           .Replace("{TicketDescription}", ticketEntity.Description)
                           .Replace("{PMUserName}", userEntity.FirstAndLastName)
                           .Replace("{Date}", DateTime.Now.ToString("MM/dd/yyyy"));

            SFConfig.Components.EmailSender.SendMail(to, emailSubject, emailBody, true, MailPriority.Normal);

            //if (!string.IsNullOrEmpty(contentTemplete.Trim()))
            //{
            //    content = contentTemplete.Trim();
            //    content = content.Replace("[TicketID]", ticketEntity.TicketID.ToString());
            //    content = content.Replace("[PMUserName]", userEntity.FirstAndLastName);
            //}

            //emailSender.SendMail(to, from, subject, content.ToString());
        }
示例#7
0
        //submit no 3
        protected void btnSub_Click(object sender, EventArgs e)
        {
            #region set value

            pId   = AddTicket3.ProjectId;
            Descr = AddTicket3.Descr.NoHTML();
            title = AddTicket3.Title.NoHTML();
            tType = AddTicket3.BugType;
            url   = AddTicket3.Url;
            ckbEn = AddTicket3.CheckEn;
            pty   = AddTicket3.Priority;

            #endregion

            if (BaseValidate(pId, Descr, title, tType, pty))
            {
                this.btnSub.Enabled  = false;
                this.btnSave.Enabled = false;

                entity                 = new TicketsEntity();
                entity.ProjectID       = Convert.ToInt32(pId);
                entity.CompanyID       = UserInfo.CompanyID;
                entity.Priority        = (PriorityState)Convert.ToInt32(pty);
                entity.TicketType      = (TicketsType)Convert.ToInt32(tType);
                entity.Title           = title;
                entity.URL             = url;
                entity.FullDescription = Descr;
                entity.CreatedBy       = UserInfo.UserID;
                entity.CreatedOn       = DateTime.Now;
                entity.ModifiedOn      = DateTime.Now;
                entity.Status          = TicketsState.Draft;
                entity.IsEstimates     = ckbEn;
                entity.StartDate       = UtilFactory.Helpers.CommonHelper.GetDefaultMinDate();
                entity.DeliveryDate    = UtilFactory.Helpers.CommonHelper.GetDefaultMinDate();
                entity.TicketCode      = Enum.GetName(typeof(TicketsType), Convert.ToInt32(tType)).Substring(0, 1);
                entity.IsInternal      = false;
                entity.ModifiedBy      = 0;
                entity.PublishDate     = UtilFactory.Helpers.CommonHelper.GetDefaultMinDate();
                entity.ConvertDelete   = CovertDeleteState.Normal;
                entity.Source          = UserInfo.Role;
                result                 = ticketAPP.AddTickets(entity);

                if (result > 0)
                {
                    AddFile(result, entity.ProjectID, 2);
                    this.AddTicket3.Msg = "No 3, Ticket Add Success!";
                    //ShowMessageToClient("No 3, Ticket Add Success!", 0, false, false);
                    this.btnSave.CssClass += " button_enabled";
                    this.btnSub.CssClass  += " button_enabled";
                    DoAddPmAndSendEmail(entity);
                }
                else
                {
                    this.AddTicket3.Msg = "No 3, Ticket Add Fail!";
                    //ShowMessageToClient("No 3, Ticket Add Fail!", 0, false, false);
                    this.btnSub.Enabled  = true;
                    this.btnSave.Enabled = true;
                }
            }
        }
示例#8
0
        /// <summary>
        /// wait client feedback
        /// </summary>
        /// <param name="fe"></param>

        public void SendEmailtoClientForFeedBack(FeedBacksEntity fe)
        {
            string contentTemplete = GetEmailExecuter("SendEmailToClientForFeedBack.txt");

            string        from     = Config.DefaultSendEmail;
            string        to       = "";
            TicketsEntity te       = ticketsRpst.Get(fe.TicketID);
            var           creators = ticketsUserRpst.GetTicketUser(fe.TicketID, TicketUsersType.Create);
            var           creator  = creators != null && creators.Count > 0 ? creators[0] : null;

            if (creator != null)
            {
                var user = userRpst.Get(creator.UserID);
                to = user.Email;
                string subject = string.Format("Ticket #{0} {1} needs your feedback.", te.TicketCode, te.Title);
                string content = string.Empty;
                if (!string.IsNullOrEmpty(contentTemplete.Trim()))
                {
                    content = contentTemplete.Trim();
                    content = content.Replace("[ClientName]", user.FirstAndLastName);
                    content = content.Replace("[PmName]", GetUnameByRoleTypeAndTicketId(te.TicketID, TicketUsersType.PM));
                }

                emailSender.SendMail(to, @from, subject, content.ToString());
            }
        }
示例#9
0
        public TicketsEntity ToBusinessEntity(ISystemDateTime timeProvider)
        {
            TicketsEntity entity = TicketsFactory.Create(this.PostByUserID, timeProvider);

            entity.Title          = string.Empty;
            entity.URL            = string.Empty;
            entity.CompanyID      = 0;
            entity.ContinueDate   = 0;
            entity.ConvertDelete  = (int)CovertDeleteState.Normal;
            entity.CreateUserName = string.Empty;
            entity.DeliveryDate   = timeProvider.Now;
            entity.Description    = string.Empty;
            entity.DevTsHours     = 0;
            entity.Hours          = timeProvider.Now.Hour;
            entity.ID             = 0;
            entity.IsEstimates    = false;
            entity.IsInternal     = false;
            entity.Priority       = (int)PriorityState.Normal;
            entity.ProjectID      = 0;
            entity.PublishDate    = timeProvider.Now;
            entity.QaTsHours      = 0;
            entity.SourceTicketID = 0;
            entity.StartDate      = timeProvider.Now;
            entity.Status         = 0;
            entity.TicketID       = 0;
            entity.TicketType     = Enum.GetName(typeof(TicketsType), TicketsType.Bug);

            entity.CreatedBy  = PostByUserID;
            entity.ModifiedBy = PostByUserID;
            entity.CreatedOn  = timeProvider.Now;
            entity.ModifiedOn = timeProvider.Now;
            return(entity);
        }
示例#10
0
        private bool AssignTicketUsers(TicketsEntity ticketsEntity, List <int> userIds)
        {
            TicketUsersEntity tuEntity = new TicketUsersEntity();

            string[] userWithRoleList = hdTicketUsers.Value.TrimEnd(',').Split(',');
            int      assignResult     = 0;

            if (userWithRoleList.Length > 0)
            {
                foreach (string item in userWithRoleList)
                {
                    if (item.Length > 0)
                    {
                        string[] userWithRole = item.Split('|');
                        if (userWithRole.Length > 0)
                        {
                            if (userIds.Contains(Convert.ToInt32(userWithRole[0])) == false)
                            {
                                tuEntity.TicketID = ticketsEntity.TicketID;
                                tuEntity.UserID   = Convert.ToInt32(userWithRole[0]);
                                tuEntity.Type     = GetUserTypeByRoleID(userWithRole[1]); //Convert.ToInt32(userWithRole[0]);
                                assignResult      = ticketAPP.AddTicketUser(tuEntity);
                                if (assignResult > 0)
                                {
                                    //当创建Ticket时,不发送邮件给Assign Users了
                                    //new SendHandler(() => ex.SendEmailToAssignedUser(tuEntity, ticketsEntity, UserInfo)).BeginInvoke(null, null);
                                }
                            }
                        }
                    }
                }
            }
            return(true);
        }
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                int tid = QS("tid", 0);

                #region bind data

                if (tid <= 0)
                {
                    this.ShowArgumentErrorMessageToClient();
                    return;
                }
                else
                {
                    TicketsEntity ticketEntity = TicketApp.GetTickets(tid);
                    if (ticketEntity != null)
                    {
                        AddTicket1.TicketsEntityInfo = ticketEntity;
                        AddTicket1.IsEnable          = true;
                    }
                    else
                    {
                        this.ShowArgumentErrorMessageToClient();
                        return;
                    }
                }
                #endregion
            }
        }
示例#12
0
        protected void BtnSave_Click(object sender, EventArgs e)
        {
            int tid = QS("tid", 0);

            if (!BaseValidate(tid))
            {
                return;
            }

            TicketsEntity dtoEntity = GetModelByTid(tid);

            dtoEntity.EsUserID   = int.Parse(this.ddlEs.SelectedValue);
            dtoEntity.ModifiedBy = UserInfo.UserID;
            dtoEntity.ModifiedOn = DateTime.Now;
            bool Update = ticketApp.UpdateTickets(dtoEntity);

            #region update method

            if (Update)
            {
                ticketStatusMgr.SendEmailToAssignedUserTs(dtoEntity);
            }

            #endregion

            if (Update)
            {
                this.ShowSuccessMessageToClient();
            }
            else
            {
                this.ShowFailMessageToClient();
            }
        }
示例#13
0
 private void HideControlByStatus(TicketsEntity entity)
 {
     status = (int)entity.Status;
     if (status == (int)TicketsState.Cancelled ||
         status == (int)TicketsState.Completed)
     {
         isShowAddFeedback      = false;
         divAddRelation.Visible = false;
     }
     if (status == (int)TicketsState.Ready_For_Review)
     {
         divTopMenu.Visible = true;
     }
     if (this.divTopMenu.Visible == false)
     {
         this.divTopMenuFill.Visible = true;
     }
     if (UserInfo.Role == RolesEnum.CLIENT)
     {
         if (UserInfo.UserID != entity.CreatedBy)
         {
             isShowAddFeedback = false;
         }
     }
 }
        public bool Update(TicketsEntity entity)
        {
            bool Flag = false;

            if (null != entity)
            {
                if (entity.ConvertDelete == CovertDeleteState.ConvertToHistory)
                {
                    UpdateCode = 100;
                    Flag       = true;
                }
                else if (!string.IsNullOrEmpty(entity.Description) && entity.ConvertDelete == CovertDeleteState.Normal)
                {
                    UpdateCode = 200;
                    Flag       = true;
                }
                else if (entity.ConvertDelete == CovertDeleteState.ForeverDelete)
                {
                    UpdateCode = 300;
                    Flag       = true;
                }
            }

            return(Flag);
        }
示例#15
0
        /// <summary>
        /// Creator(Client) need another clients' feedback.
        /// </summary>
        /// <param name="ticketId">The ticket identifier.</param>
        /// <param name="clients">The clients.</param>
        public void SendEmailtoClientForFeedBack(int ticketId, params int[] clients)
        {
            if (clients == null)
            {
                return;
            }
            string contentTemplete = GetEmailExecuter("SendEmailToClientForFeedBack.txt");

            string        from     = Config.DefaultSendEmail;
            string        to       = "";
            TicketsEntity te       = ticketsRpst.Get(ticketId);
            var           creators = ticketsUserRpst.GetTicketUser(ticketId, TicketUsersType.Create);
            var           creator  = creators != null && creators.Count > 0 ? creators[0] : null;

            if (creator != null)
            {
                var createClient = userRpst.Get(creator.UserID);
                foreach (var client in clients)
                {
                    var user = userRpst.Get(client);
                    to = user.Email;
                    string subject = string.Format("Ticket #{0} {1} needs your feedback.", te.TicketCode, te.Title);
                    string content = string.Empty;
                    if (!string.IsNullOrEmpty(contentTemplete.Trim()))
                    {
                        content = contentTemplete.Trim();
                        content = content.Replace("[ClientName]", user.FirstAndLastName);
                        content = content.Replace("[PmName]", createClient.FirstAndLastName);
                    }
                    emailSender.SendMail(to, @from, subject, content.ToString());
                }
            }
        }
示例#16
0
        protected void Page_Load(object sender, EventArgs e)
        {
            ((Pop)this.Master).Width = 450;
            TicketID      = QS("tid", 0);
            _ticketEntity = ticketApp.GetTickets(TicketID);

            if (!IsPostBack)
            {
                if (_ticketEntity != null)
                {
                    litHead.Text = "Ticket ID: " + _ticketEntity.TicketID + ", " + _ticketEntity.Title;

                    if (_ticketEntity.Status == TicketsState.Waiting_Confirm)
                    {
                        ltrlFinalTime.Text = _ticketEntity.FinalTime.ToString() + " hour(s)";
                    }

                    ddlClient.DataSource = projApp.GetPojectClientUsers(_ticketEntity.ProjectID, projApp.Get(_ticketEntity.ProjectID).CompanyID);
                    ddlClient.DataBind();

                    ListItem li = ddlClient.Items.FindByValue(_ticketEntity.ConfirmEstmateUserId.ToString());
                    if (li != null)
                    {
                        li.Selected = true;
                    }
                }
            }
        }
示例#17
0
        public bool UpdateTicketStatusToDeny(int ticketId)
        {
            try
            {
                if (UserInfo.UserID <= 0)
                {
                    return(false);
                }
                TicketsEntity ticketEntity = new TicketsEntity();

                ticketEntity = ticketAPP.GetTickets(ticketId);

                TicketsState originalStatus = ticketEntity.Status;
                bool         Update         = true;
                ticketEntity.Status = TicketsState.Not_Approved;

                ticketEntity.ModifiedOn  = DateTime.Now;
                ticketEntity.ModifiedBy  = UserInfo.UserID;
                ticketEntity.PublishDate = DateTime.Now.Date;
                ProjectsEntity projectEntity = projectApp.Get(ticketEntity.ProjectID);

                Update = ticketAPP.UpdateTickets(ticketEntity, true, projectEntity.PMID);
                ticketStatusMgr.SendEmailWithClientNotApp(ticketEntity);

                return(Update);
            }
            catch (Exception ex)
            {
                WebLogAgent.Write(string.Format("Error Ashx:DoUpdateTicketStatus.ashx Messages:\r\n{0}", ex));
                return(false);
            }
        }
示例#18
0
        /// <summary>
        /// save : 1:save ; 2:draft ;3 save and new
        /// </summary>
        /// <param name="save"></param>
        private void SaveTicket(int save)
        {
            ProjectsEntity projectsEntity = new ProjectApplication().Get(int.Parse(ddlProject.SelectedValue));

            //判断当前日期是否大于Project的End Date
            if (!projectApplication.CheckIfEstimated(projectsEntity))
            {
                ShowMessageToClient("This project is closed, if you need to submit new tickets for this project, please contact us at [email protected].",
                                    2, false, false);
                return;
            }

            TicketsEntity ticketsEntity = GetEntity(save, projectsEntity.ProjectID, projectsEntity.CompanyID);

            int result = new TicketsApplication().AddTickets(ticketsEntity);

            if (result > 0)
            {
                AddTicketUsers(projectsEntity, ticketsEntity, result);
                AddIniHistroy(ticketsEntity);

                if (!ticketsEntity.IsInternal)
                {
                    SendHandler handler = new SendHandler(SendEamil);
                    handler.BeginInvoke(ticketsEntity, UserInfo, null, null);
                }

                string fileName = hidUploadFile.Value;

                if (fileName.Trim() != string.Empty)
                {
                    string[] files = fileName.Split('|');
                    foreach (string str in files)
                    {
                        InsertFile(str, ticketsEntity.ProjectID, result, ticketsEntity.CompanyID);
                    }
                }

                switch (save)
                {
                case 1:
                    Redirect("/Ticket/Ongoing.aspx", true);
                    break;

                case 2:
                    Redirect("/Ticket/Draft.aspx", true);
                    break;

                case 3:
                    // ShowSuccessMessageToClient("The ticket has been added.", false, false);
                    Redirect("/Ticket/New.aspx?project=" + ddlProject.SelectedValue, true);
                    break;
                }
            }
            else
            {
                ShowFailMessageToClient();
            }
        }
示例#19
0
 private bool CheckSecurity(TicketsEntity info)
 {
     if (UserInfo.Role == RolesEnum.CLIENT)
     {
         return(false);
     }
     return(true);
 }
示例#20
0
        protected void Page_Load(object sender, EventArgs e)
        {
            int tid = QS("tid", 0);

            if (tid <= 0)
            {
                this.ShowArgumentErrorMessageToClient();
                return;
            }
            else
            {
                TicketID     = tid;
                ticketEntity = ticketApp.GetTicketWithProjectTitle(tid);
                IsCompleted  = ticketEntity.Status == TicketsState.Completed;
                HideControlByStatus(ticketEntity);//hidden control by ticket status
                if (ticketEntity != null)
                {
                    IsCreate = ticketApp.GetTicketCreateUser(TicketID).UserID == UserInfo.UserID;
                    progress.orderedDisplayStates    = displayStates;
                    progress.CurrentState            = ticketApp.ConvertTicketStateToClientProgressState(ticketEntity.RealStatus);
                    this.feedbacks.IsSunnet          = true;
                    this.feedbacks.TicketsEntityInfo = ticketEntity;
                    //ticketBasicInfo.TicketsEntity = ticketEntity;
                    //hdStar.Value = ticketEntity.Star.ToString();
                    GetButtonsHTML();

                    TicketUsersEntity ticketUser = ticketApp.GetTicketUser(ticketEntity.TicketID, UserInfo.ID);
                    if (ticketUser != null)
                    {
                        ltlStatus.Text = ticketUser.WorkingOnStatus.ToText();
                    }
                    if (ticketUser == null || UserInfo.Role == RolesEnum.CLIENT)
                    {
                        phlWorkingOn.Visible = false;
                    }
                    ticketEntity.CreatedUserEntity = userApp.GetUser(ticketEntity.CreatedBy);
                    this.fileUpload.TicketID       = ticketEntity.TicketID;

                    if (ticketEntity.IsEstimates && ticketEntity.Status > TicketsState.Waiting_Confirm && ticketEntity.ConfirmEstmateUserId > 0)
                    {
                        ConfirmEstmateUser = userApp.GetUser(ticketEntity.ConfirmEstmateUserId).FirstAndLastName;
                    }

                    if (ticketEntity.Status == TicketsState.Waiting_Confirm && ticketEntity.ConfirmEstmateUserId == UserInfo.UserID)
                    {
                        isWaitConfirm  = true;
                        UrlWaitConfirm = string.Format("ConfirmEstimates.aspx?tid={0}", ticketEntity.TicketID);
                    }
                }
                else
                {
                    this.ShowArgumentErrorMessageToClient();
                    return;
                }
            }
        }
示例#21
0
 protected void Page_Load(object sender, EventArgs e)
 {
     if (!IsPostBack)
     {
         ((Pop)this.Master).Width = 460;
         int ticketID = QS("tid", 0);
         _ticketEntity = ticketAPP.GetTickets(ticketID);
         litHead.Text  = "Ticket ID: " + _ticketEntity.TicketID + ", " + _ticketEntity.Title;
     }
 }
示例#22
0
 protected void btnSave_Click(object sender, EventArgs e)
 {
     _ticketEntity = ticketApp.GetTickets(TicketID);
     if (_ticketEntity.ConfirmEstmateUserId != int.Parse(ddlClient.SelectedValue))
     {
         ticketApp.UpdateConfirmEstmateUserId(TicketID, int.Parse(ddlClient.SelectedValue));
         new TicketStatusManagerApplication().SendEmailWaitConfirm(_ticketEntity);
     }
     Redirect(EmptyPopPageUrl, false, true);
 }
示例#23
0
        private TicketsEntity GetModelByTid(int tid)
        {
            if (tid <= 0)
            {
                return(null);
            }

            TicketsEntity entity = ticketApp.GetTickets(tid);

            return(entity != null ? entity : null);
        }
示例#24
0
        protected void Page_Load(object sender, EventArgs e)
        {
            #region initial

            this.AddTicket1.IsSunnet = "false";

            #endregion

            if (!IsPostBack)
            {
                int tid = QS("tid", 0);

                if (tid <= 0)
                {
                    this.ShowArgumentErrorMessageToClient();
                    return;
                }
                else
                {
                    TicketsEntity ticketEntity = TicketApp.GetTickets(tid);
                    HideControlByStatus(ticketEntity);//hidden control by ticket status

                    if (ticketEntity != null)
                    {
                        if (!CheckSecurity(ticketEntity))
                        {
                            this.ShowArgumentErrorMessageToClient();
                            return;
                        }
                        //by Lee
                        //if (ticketEntity.Status == TicketsState.Submitted)
                        //{
                        //    this.AddTicket1.IsEnable = false;
                        //    this.divBtnSave.Visible = true;
                        //}
                        //else
                        {
                            this.AddTicket1.IsEnable = true;
                        }
                        this.lilTicketTitle.Text                = " : " + ticketEntity.Title;
                        this.FeedBacksList1.IsSunnet            = false;
                        this.FeedBacksList1.TicketsEntityInfo   = ticketEntity;
                        AddTicket1.TicketsEntityInfo            = ticketEntity;
                        ClientTicketBaseInfo1.TicketsEntityInfo = ticketEntity;
                    }
                    else
                    {
                        this.ShowArgumentErrorMessageToClient();
                        return;
                    }
                }
            }
            InitCompanyInfo();
        }
示例#25
0
 private void BindTicket(TicketsEntity entity)
 {
     this.rdoPriority.SelectedValue = ((int)entity.Priority).ToString();
     this.rdoType.SelectedValue     = ((int)entity.TicketType).ToString();
     ddlProject.SelectedValue       = entity.ProjectID.ToString();
     chkEN.Checked = entity.IsEstimates;
     txtTitle.Text = Server.HtmlDecode(entity.Title);
     txtUrl.Text   = Server.HtmlDecode(entity.URL);
     txtDesc.Value = Server.HtmlDecode(entity.FullDescription);
     litFiles.Text = GetFilesHTML(entity.TicketID);
 }
示例#26
0
 private void BindTicket(TicketsEntity entity)
 {
     this.radioPriority.SelectedValue = ((int)entity.Priority).ToString();
     ddlTicketType.SelectedValue      = ((int)entity.TicketType).ToString();
     ddlProject.SelectedValue         = entity.ProjectID.ToString();
     chkEN.Checked  = entity.IsEstimates;
     Prioirty       = (int)entity.Priority;
     txtTitle.Value = entity.Title;
     txtUrl.Value   = entity.URL;
     txtDesc.Value  = entity.FullDescription;
     litFile.Text   = fileList(entity.TicketID);
 }
示例#27
0
        protected void Page_Load(object sender, EventArgs e)
        {
            ((Ticket)this.Master).CurrentModule = Codes.SelectedSunnetMenu.Ticket;
            int tid = QS("tid", 0);

            if (tid <= 0)
            {
                this.ShowArgumentErrorMessageToClient();
                return;
            }
            else
            {
                TicketID     = tid;
                ticketEntity = ticketApp.GetTicketWithProjectTitle(tid);
                IsCompleted  = ticketEntity.Status == TicketsState.Completed;
                HideControlByStatus(ticketEntity);//hidden control by ticket status
                if (ticketEntity != null)
                {
                    progress.orderedDisplayStates    = displayStates;
                    progress.CurrentState            = ticketApp.ConvertTicketStateToClientProgressState(ticketEntity.RealStatus);
                    this.feedbacks.IsSunnet          = true;
                    this.feedbacks.TicketsEntityInfo = ticketEntity;
                    //ticketBasicInfo.TicketsEntity = ticketEntity;
                    //hdStar.Value = ticketEntity.Star.ToString();
                    changeHistory.TicketID = TicketID;
                    GetButtonsHTML();

                    TicketUsersEntity ticketUser = ticketApp.GetTicketUser(ticketEntity.TicketID, UserInfo.ID);
                    if (ticketUser != null)
                    {
                        ltlStatus.Text = ticketUser.WorkingOnStatus.ToText();
                    }
                    //Ticket 3023 #4. 隐藏按纽 ([WorkingOn][Completed] [Canceled][None])
                    //if (ticketUser == null || UserInfo.Role == RolesEnum.CLIENT)
                    phlWorkingOn.Visible           = false;
                    ticketEntity.CreatedUserEntity = userApp.GetUser(ticketEntity.CreatedBy);

                    this.fileUpload.TicketID = ticketEntity.TicketID;
                    if (ticketEntity.IsEstimates && ticketEntity.Status > TicketsState.Waiting_Confirm && ticketEntity.ConfirmEstmateUserId > 0)
                    {
                        ConfirmEstmateUser = userApp.GetUser(ticketEntity.ConfirmEstmateUserId).FirstAndLastName;
                    }
                }
                else
                {
                    this.ShowArgumentErrorMessageToClient();
                    return;
                }
            }
        }
示例#28
0
 private bool CheckSecurity(TicketsEntity info)
 {
     if (UserInfo.Role == RolesEnum.CLIENT)
     {
         if (UserInfo.CompanyID != info.CompanyID)
         {
             return(false);
         }
     }
     else if (UserInfo.Role != RolesEnum.ADMIN && UserInfo.Role != RolesEnum.PM && UserInfo.Role != RolesEnum.Sales)
     {
         return(false);
     }
     return(true);
 }
示例#29
0
        private TicketsEntity GetEntity(int save, int projectID, int companyID)
        {
            TicketsEntity ticketsEntity = new TicketsEntity();

            ticketsEntity.Title           = txtTitle.Text.Trim().NoHTML();
            ticketsEntity.FullDescription = txtDesc.Value.Trim().NoHTML();
            ticketsEntity.URL             = txtUrl.Text.Trim();
            ticketsEntity.ProjectID       = projectID;
            ticketsEntity.TicketType      = (TicketsType)int.Parse(rdoType.SelectedValue);
            ticketsEntity.TicketCode      = new TicketsApplication().ConvertTicketTypeToTicketCode(ticketsEntity.TicketType);
            ticketsEntity.Priority        = (PriorityState)int.Parse(this.rdoPriority.SelectedValue);
            ticketsEntity.CompanyID       = companyID;
            ticketsEntity.IsEstimates     = chkEN.Checked;
            ticketsEntity.IsInternal      = false;
            ticketsEntity.CreatedBy       = UserInfo.UserID;
            ticketsEntity.CreatedOn       = DateTime.Now;
            ticketsEntity.ModifiedBy      = UserInfo.UserID;
            ticketsEntity.ModifiedOn      = DateTime.Now;
            ticketsEntity.PublishDate     = UtilFactory.Helpers.CommonHelper.GetDefaultMinDate();
            ticketsEntity.ConvertDelete   = CovertDeleteState.Normal;
            ticketsEntity.StartDate       = UtilFactory.Helpers.CommonHelper.GetDefaultMinDate();
            ticketsEntity.DeliveryDate    = UtilFactory.Helpers.CommonHelper.GetDefaultMinDate();
            ticketsEntity.ResponsibleUser = new ProjectApplication().Get(projectID).PMID;;
            if (UserInfo.Role == RolesEnum.PM || UserInfo.Role == RolesEnum.ADMIN)
            {
                ticketsEntity.Source = (RolesEnum)Enum.Parse(typeof(RolesEnum), ddlSource.SelectedValue);
            }
            else
            {
                ticketsEntity.Source = UserInfo.Role;
            }
            if (save == 2)
            {
                ticketsEntity.Status = TicketsState.Draft;
            }
            else
            {
                if (UserInfo.Role == RolesEnum.PM || UserInfo.Role == RolesEnum.ADMIN)
                {
                    ticketsEntity.Status = TicketsState.PM_Reviewed;
                }
                else
                {
                    ticketsEntity.Status = TicketsState.Submitted;
                }
            }
            return(ticketsEntity);
        }
        public bool ChangeTicketStatesBugToRequest(int tid, int type, string descr, TicketsEntity te)
        {
            return(true);

            //if (!ValdateChangeTicketStateToBug(tid, type, descr)) return false;

            //BaseValidator<TicketsEntity> validator = new UpdateTicketValidator();

            //if (!validator.Validate(te))
            //{
            //    return false;
            //}
            //bool RecordResult = true;
            ////add new request ticket to db
            //TicketsEntity newEntity = new TicketsEntity();
            //newEntity.TicketType = TicketsType.Request;
            //RecordResult = Convert.ToBoolean(repository.Insert(newEntity));

            //if (!RecordResult)
            //{
            //    return false;
            //}
            ////update ticket state
            //switch (type)
            //{
            //    case 1:
            //        te.ConvertDelete = CovertDeleteState.ConvertToHistory;
            //        RecordResult = repository.Update(te);
            //        break;
            //    case 2:
            //        te.Description = descr;
            //        RecordResult = repository.Update(te);
            //        break;
            //    case 3:
            //        te.ConvertDelete = CovertDeleteState.ForeverDelete;
            //        RecordResult = repository.Update(te);
            //        break;
            //    default:
            //        RecordResult = false;
            //        break;
            //}
            //if (!RecordResult)
            //{
            //    return false;
            //}
            //return RecordResult;
        }