public void ProcessRequest(HttpContext context)
        {
            if (IdentityContext.UserID <= 0)
            {
                return;
            }
            UsersEntity userEntity = new App.UserApplication().GetUser(IdentityContext.UserID);

            if (userEntity.Role != RolesEnum.ADMIN && userEntity.Role != RolesEnum.PM && userEntity.Role != RolesEnum.Sales)
            {
                return;
            }

            context.Response.ContentType = "text/plain";

            String checkboxList = context.Request["checkboxList"] + "";
            String wid          = context.Request["wid"];
            int    proposaltrackerId;

            if (!int.TryParse(wid, out proposaltrackerId))
            {
                return;
            }

            checkboxList = checkboxList.Trim();
            if (string.IsNullOrEmpty(checkboxList))
            {
                return;
            }

            ProposalTrackerRelationEntity WRDTO = new ProposalTrackerRelationEntity();

            if (checkboxList.EndsWith(","))
            {
                checkboxList = checkboxList.Remove(checkboxList.Length - 1);
            }


            string[] tidArray = checkboxList.Split(',');

            foreach (string item in tidArray)
            {
                if (item.Length > 0)
                {
                    WRDTO.WID = Convert.ToInt32(wid);

                    WRDTO.TID = Convert.ToInt32(item);

                    WRDTO.CreatedBy = IdentityContext.UserID;

                    app.AddProposalTrackerRelation(WRDTO);
                }
            }
        }
Exemple #2
0
        protected void btnSave_Click(object sender, EventArgs e)
        {
            int          tmpState    = int.Parse(ddlStatus.SelectedValue);
            TicketsState selectState = (TicketsState)tmpState;

            if (rdoAccounting.SelectedValue == "1")
            {
                //int wid = int.Parse(ddl_Proposal.SelectedValue);
                int wid = int.Parse(hid_Proposal.Value);
                ProposalTrackerRelationEntity model = wrApp.GetProposalTrackerByTid(ticketID);
                if (model == null || model.ID == 0)
                {
                    model.CreatedBy = IdentityContext.UserID;
                    model.TID       = ticketID;
                    model.WID       = wid;
                    wrApp.AddProposalTrackerRelation(model);
                }
                else
                {
                    if (model.TID != ticketID || model.WID != wid)
                    {
                        model.TID = ticketID;
                        model.WID = wid;
                        wrApp.UpdateProposalByProposal(model);
                    }
                }
            }
            else
            {
                ProposalTrackerRelationEntity model = wrApp.GetProposalTrackerByTid(ticketID);
                if (model != null || model.ID > 0)
                {
                    wrApp.DelProposalTrackerRelationByID(model.ID);
                }
            }

            bool result = false;
            //指定初次估时者
            int estimationUserID = 0;

            bool isEstimation = rdoEstimationYes.Checked;

            if (isEstimation && selectState == TicketsState.PM_Reviewed)
            {
                if (!int.TryParse(QF(ddlEstUser.UniqueID), out estimationUserID))
                {
                    ShowFailMessageToClient("Invalid extimation user.");
                    return;
                }
            }

            //选择accounting

            string accounting = (rdoAccounting.SelectedValue == "" ? "0" : rdoAccounting.SelectedValue);

            ticketsEntity.Accounting = (AccountingState)int.Parse(accounting);


            //指派最终确认估时者
            int confirmEstmateUserId = 0;

            if (selectState == TicketsState.Waiting_Confirm)
            {
                if (!int.TryParse(QF(ddlConfirmEstmateUserId.UniqueID), out confirmEstmateUserId))
                {
                    ShowFailMessageToClient("Invalid Waiting Confirm user.");
                    return;
                }
            }

            decimal initialtionHours;

            //初次估时
            if (!decimal.TryParse(txtInitialTime.Text, out initialtionHours))
            {
                ShowFailMessageToClient("Invalid extimation hour.");
                return;
            }

            decimal extimationHours;

            ///最终估时
            if (!decimal.TryParse(txtBoxExtimationHours.Text, out extimationHours))
            {
                ShowFailMessageToClient("Invalid extimation hour.");
                return;
            }


            ///没有达到预期要求
            if (((TicketsState)int.Parse(ddlStatus.SelectedValue)) == TicketsState.PM_Deny)
            {
                HttpFileCollection files            = Request.Files;
                string             fileuploadErrMsg = string.Empty;
                for (int i = 0; i < files.Count; i++)
                {
                    if (files[i].ContentLength > 0 || txtBoxDenyReason.Text.Trim().Length > 0)
                    {
                        FeedBacksEntity feedbacksEntity = GetFeedbacksEntity();
                        feedbacksEntity.ID = fbAPP.AddFeedBacks(feedbacksEntity);
                        result             = feedbacksEntity.ID > 0;
                        if (!result)
                        {
                            ShowFailMessageToClient(fbAPP.BrokenRuleMessages);
                            return;
                        }
                        if (files[i].ContentLength > 0 && IsValidFile(files[i].FileName))
                        {
                            if (!InsertFile(files[i], ticketsEntity.ProjectID, false,
                                            feedbacksEntity.ID))
                            {
                                fileuploadErrMsg += files[i].FileName + " Upload failed.";
                                result            = false;
                            }
                        }
                    }
                }
            }

            if (selectState == TicketsState.Estimation_Approved)
            {
                ticketsEntity.ProprosalName = txtProprosalName.Text;
                ticketsEntity.WorkPlanName  = txtWorkPlanName.Text;
                ticketsEntity.WorkScope     = txtWorkScope.Text;
                ticketsEntity.Invoice       = txtInvoice.Text;
            }



            int responsibleUserId;

            int.TryParse(QF(ddlResponsibleUser.UniqueID), out responsibleUserId);
            int oldResponsibleUserId = ticketsEntity.ResponsibleUser;

            ticketsEntity.ResponsibleUser = responsibleUserId;

            ProjectsEntity projectEntity = projApp.Get(ticketsEntity.ProjectID);

            int newClientId = -1;

            if (ddlClient.Visible == true)
            {
                if (ddlClient.SelectedValue != "-1")
                {
                    newClientId = int.Parse(ddlClient.SelectedValue);
                }
            }

            result = ticketApp.PMReview(ticketsEntity, UserInfo, rdoRequestYes.Checked,
                                        ddlStatus.SelectedValue, isEstimation, estimationUserID, confirmEstmateUserId, initialtionHours, extimationHours
                                        , ticketUsersView.GetSelectedUserList(), txtBoxConvertDescr.Text,
                                        txtBoxDenyReason.Text.Trim(), projectEntity.PMID, newClientId);

            if (ddlClient.Visible == true)
            {
                if (ddlClient.SelectedValue != "-1")
                {
                    ticketApp.UpdateCreateUser(int.Parse(ddlClient.SelectedValue), ticketsEntity.TicketID);
                }
            }

            if (result)
            {
                //sent email to responsible user 2017/10/23
                if (oldResponsibleUserId != ticketsEntity.ResponsibleUser)
                {
                    ticketApp.SendEmailToResponsibile(ticketsEntity, UserInfo);
                }
                // 更新所有相关人员的WorkingOn状态
                ticketApp.UpdateWorkingOnStatus(ticketID, selectState);
                Redirect(EmptyPopPageUrl, false, true);
            }
            else
            {
                ShowFailMessageToClient();
            }
        }
Exemple #3
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));
            TicketsEntity  ticketsEntity  = GetEntity(save, projectsEntity.ProjectID, projectsEntity.CompanyID);

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

            if (result > 0)
            {
                ticketsEntity.TicketID = result;
                List <int> userIds;

                AddDefaultTicketUsers(projectsEntity, ticketsEntity, result, out userIds);
                AssignTicketUsers(ticketsEntity, userIds);
                AddIniHistroy(ticketsEntity);

                if (rdoShareKnowlege.Checked)
                {
                    ShareEntity shareEntity = new ShareEntity(UserInfo.ID, ObjectFactory.GetInstance <ISystemDateTime>());
                    int         type        = 0;
                    shareEntity.Title            = ticketsEntity.Title;
                    shareEntity.Note             = ticketsEntity.FullDescription;
                    shareEntity.Type             = type;
                    shareEntity.TicketID         = result;
                    shareEntity.TypeEntity.Title = ticketsEntity.Title;
                    _shareApp.Save(shareEntity);
                }

                if (!ticketsEntity.IsInternal)
                {
                    new SendHandler(() => ex.SendEmailToPMWhenTicketAdd(ticketsEntity, UserInfo))
                    .BeginInvoke(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);
                    }
                }
                ProposalTrackerRelationEntity model = new ProposalTrackerRelationEntity();
                if (hid_Proposal.Value != "")
                {
                    model.CreatedBy = IdentityContext.UserID;
                    model.TID       = ticketsEntity.TicketID;
                    model.WID       = int.Parse(this.hid_Proposal.Value);
                    wrApp.AddProposalTrackerRelation(model);
                }


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

                case 3:
                    Redirect("/SunnetTicket/New.aspx?project=" + ddlProject.SelectedValue, true);
                    break;
                }
            }
            else
            {
                ShowFailMessageToClient();
            }
        }