예제 #1
0
파일: AccessRequest.cs 프로젝트: apxlee/SAP
        private WebMethodResponse createHPSMTicket(SNAPDatabaseDataContext db, SNAP_Workflow accessTeamWF, DateTime? dueDate, SNAP_Request req)
        {
            string updatedDescription = string.Format("Supplemental Access Process Request Id: {0}\r\nAffected End User Id: {1}\r\nRequested By: {2}\r\n-------------------------------------------------------\r\n{3}"
                , req.pkId, req.userId, req.submittedBy, requestDescription);

            Quote q = new Quote();
            q.Category = "apollo request";
            q.Subcategory = "Employee Management Support Service";
            q.Priority = "4 - R3 Regular";
            q.RequestedEndDate = dueDate ?? DateTime.Now.AddDays(1);
            q.CurrentPhase = "Working";
            q.ServiceContact = Regex.Replace(req.userId, @"^a\.", "");
            q.PrimaryContact = Regex.Replace(req.submittedBy, @"^a\.", "");
            q.Description = new List<string>() {updatedDescription};
            q.PartNumber = "ag1144"; //Server Privileged Access - Add, modify, or remove
            q.ItemCount = "1";
            q.ItemQuantity = "1";
            q.SaveTicket(); // uncomment this line to do end-end test

            req.ticketNumber = q.RequestID;

            var hpsmlink = ConfigurationManager.AppSettings["HPSMLink"];

            addAccessTeamComment(
                accessTeamWF
                , string.Format("Due Date: {0} | Service Desk Ticket: <a target=\"_blank\" href=\"{2}\">{1}</a>"
                    , Convert.ToDateTime(dueDate).ToString("MMM d, yyyy")
                    , req.ticketNumber
                    , hpsmlink)
                , CommentsType.Ticket_Created);

            db.SubmitChanges();
            return new WebMethodResponse(true, "Ticket Creation", "Success"); ;
        }
예제 #2
0
파일: AccessRequest.cs 프로젝트: apxlee/SAP
        private WebMethodResponse createCASDTicket(SNAPDatabaseDataContext db, SNAP_Workflow accessTeamWF, DateTime? dueDate, SNAP_Request req)
        {
            var changeRequest = new ServiceDesk.ChangeRequest(Apollo.ServiceDesk.SDConfig.Instance.Login, Apollo.ServiceDesk.SDConfig.Instance.Password);
            string updatedDescription = string.Format("Supplemental Access Process Request Id: {0}\r\nAffected End User Id: {1}\r\nRequested By: {2}\r\n-------------------------------------------------------\r\n{3}"
                , req.pkId, req.userId, req.submittedBy, requestDescription);

            if (requestDescription.Length > 5000)
            {
                return new WebMethodResponse(false, "Ticket Creation Error", "Request Content Too Long. Please split the request");
            }

            changeRequest.CategoryName = "Server.Systems.Privileged Access";
            changeRequest.Submitter.Get("svc_Cap");
            changeRequest.AffectedUser.Get(Regex.Replace(req.userId, @"^a\.", "")); // remove a. acct
            changeRequest.Attributes["description"] = updatedDescription;
            changeRequest.Create();

            req.ticketNumber = changeRequest.Number;
            var handler = changeRequest.Handle.Split(':')[1]; // chg:12345
            var sdlink = ConfigurationManager.AppSettings["SDLink"] + handler;

            addAccessTeamComment(
                accessTeamWF
                , string.Format("Due Date: {0} | Service Desk Ticket: <a target=\"_blank\" href=\"{2}\">{1}</a>"
                    , Convert.ToDateTime(dueDate).ToString("MMM d, yyyy")
                    , req.ticketNumber
                    , sdlink)
                , CommentsType.Ticket_Created);

            db.SubmitChanges();
            return new WebMethodResponse(true, "Ticket Creation", "Success");
        }
예제 #3
0
파일: AccessRequest.cs 프로젝트: apxlee/SAP
        protected ApprovalWorkflow(int id)
        {
            Id = id;
            db = new SNAPDatabaseDataContext();

            wf = db.SNAP_Workflows.Single(w => w.pkId == Id);
            req = wf.SNAP_Request;
            accessReq = new AccessRequest(req.pkId);
            accessTeamWF = accessReq.FindApprovalTypeWF(db, (byte)ActorApprovalType.Workflow_Admin)[0];
        }
예제 #4
0
파일: AccessRequest.cs 프로젝트: apxlee/SAP
        private bool reqStateTransition(SNAP_Request req, RequestState reqFr, RequestState reqTo, SNAP_Workflow accessTeamWF,  WorkflowState wfFr, WorkflowState wfTo)
        {
            var result = false;
            if (req.statusEnum == (byte)reqFr)
            {
                var accessTeamWFState = accessTeamWF.SNAP_Workflow_States.Single(s => s.completedDate == null);
                if (accessTeamWFState.workflowStatusEnum == (byte)wfFr)
                {
                    stateTransition(ActorApprovalType.Workflow_Admin, accessTeamWF,wfFr,wfTo);

                    if (reqFr != reqTo)
                    {
                        req.statusEnum = (byte) reqTo;
                        req.lastModifiedDate = DateTime.Now;

                    }
                    result = true;
                }

            }
            return result;
        }
예제 #5
0
파일: AccessRequest.cs 프로젝트: apxlee/SAP
 private void initializeData(SNAPDatabaseDataContext db, WorkflowState state, out SNAP_Request req, out SNAP_Workflow accessTeamWF, out DateTime? dueDate)
 {
     req = db.SNAP_Requests.Single(r => r.pkId == _id);
     accessTeamWF = req.SNAP_Workflows.Single(x => x.actorId == AccessTeamActorId);
     dueDate = accessTeamWF.SNAP_Workflow_States.Single(
         s =>
         s.completedDate == null &&
         s.workflowStatusEnum == (byte)state).dueDate;
 }
예제 #6
0
파일: AccessRequest.cs 프로젝트: apxlee/SAP
 private List<int> getToDeletedActorList(SNAP_Request req, List<int> actorIds)
 {
     var orgActorList = new List<int>();
     foreach (var wf in req.SNAP_Workflows)
     {
         if (wf.actorId != 1)
             orgActorList.Add(wf.actorId);
     }
     return orgActorList.Except(actorIds).ToList();
 }