示例#1
0
        private static GenericResult HelpdeskListTickets(IResource res)
        {
            var result = new GenericResult();

            DataTable dt = HelpdeskUtility.GetTickets(res);

            object[] list = new object[] { };

            if (dt != null)
            {
                list = dt.AsEnumerable().Select(x => new
                {
                    ticketID      = x["ticketID"],
                    created       = x["created"],
                    email         = x["email"],
                    assigned_to   = x["assigned_to"],
                    subject       = x["subject"],
                    priority_desc = x["priority_desc"]
                }).ToArray();
            }

            result.Data = new { tickets = list };

            return(result);
        }
示例#2
0
 public void CanGetCcEmailsForHardwareIssue()
 {
     using (StartUnitOfWork())
     {
         var resource = Provider.Scheduler.Resource.GetResource(85051);
         var emails   = HelpdeskUtility.GetCcEmailsForHardwareIssue(resource, 1301);
         Assert.IsTrue(emails.Length > 0);
     }
 }
示例#3
0
        protected void btnCreateTicket_Click(object sender, EventArgs e)
        {
            var res = Helper.GetResourceTreeItemCollection().GetResource(ResourceID);

            litErrMsg.Text = string.Empty;

            string helpdeskEmail = GetHelpdeskEmail(res);

            bool load = true;

            if (string.IsNullOrEmpty(txtSubject.Text))
            {
                litErrMsg.Text = WebUtility.BootstrapAlert("danger", "Please enter a subject.", true);
            }
            else if (string.IsNullOrEmpty(txtMessage.Text))
            {
                litErrMsg.Text = WebUtility.BootstrapAlert("danger", "Please enter a message.", true);
            }
            else if (string.IsNullOrEmpty(helpdeskEmail))
            {
                litErrMsg.Text = WebUtility.BootstrapAlert("danger", "An error occurred while creating the ticket. A helpdesk email is not configured for this resource.", true);
            }
            else
            {
                IReservation rsv = null;
                if (ddlReservations.SelectedValue != "None")
                {
                    rsv = Provider.Scheduler.Reservation.GetReservation(int.Parse(ddlReservations.SelectedValue));
                }

                string             subjectText     = "[" + res.ResourceID.ToString() + ":" + res.ResourceName + "] " + txtSubject.Text;
                CreateTicketResult addTicketResult = HelpdeskUtility.CreateTicket(CurrentUser, res, rsv, CurrentUser.ClientID, ddlReservations.SelectedItem.Text, subjectText, txtMessage.Text, ddlTicketType.SelectedItem.Text, Request.Url);

                if (addTicketResult.Success)
                {
                    litErrMsg.Text = WebUtility.BootstrapAlert("success", string.Format("Your ticket has been created. A confirmation email has been sent to {0}.", CurrentUser.Email));
                    load           = false;
                }
                else
                {
                    StringBuilder sb = new StringBuilder();
                    sb.AppendLine(string.Format("Create ticket failed. User: {0} ({1}). Resource: {2} ({3})", CurrentUser.DisplayName, CurrentUser.ClientID, res.ResourceName, res.ResourceID));
                    sb.AppendLine(string.Format("----------{0}{1}", Environment.NewLine, addTicketResult.Exception.Message));
                    SendEmail.SendDeveloperEmail("LNF.Web.Scheduler.Controls.Helpdesk.btnCreateTicket_Click", "Create Ticket Error", sb.ToString());
                    litErrMsg.Text = WebUtility.BootstrapAlert("danger", "Sorry, an error occurred and your ticket was not created. A notification has been sent to LNF staff.");
                }
            }

            if (load)
            {
                //LoadOpenTickets();
            }

            LoadReservations();
        }
示例#4
0
        public void CanSendHardwareIssueEmail()
        {
            var resource = Provider.Scheduler.Resource.GetResource(999998);
            int sent     = HelpdeskUtility.SendHardwareIssueEmail(resource, 1301, "test", "test hardware ticket email");

            Assert.AreEqual(0, sent);

            resource = Provider.Scheduler.Resource.GetResource(85051);
            sent     = HelpdeskUtility.SendHardwareIssueEmail(resource, null, 1301, string.Empty, "test", "test hardware ticket email", TicketPriorty.HardwareIssue, new Uri("http://localhost/test"));
            Assert.IsTrue(sent > 0);
        }
示例#5
0
        private int SendHardwareTicketEmails(HttpContextBase context)
        {
            string subject = context.Request["subject"];
            string message = context.Request["message"];

            if (!int.TryParse(context.Request["resourceId"], out int resourceId))
            {
                throw new Exception("Invalid parameter: resourceId");
            }

            var res = Provider.Scheduler.Resource.GetResource(resourceId);

            int sent = HelpdeskUtility.SendHardwareIssueEmail(res, context.CurrentUser(Provider).ClientID, subject, message);

            return(sent);
        }
示例#6
0
        private static GenericResult HelpdeskInfo(IResource res)
        {
            var result = new GenericResult();

            DataTable     dt   = HelpdeskUtility.GetTickets(res);
            List <object> list = new List <object>();

            if (dt != null)
            {
                foreach (DataRow dr in dt.Rows)
                {
                    list.Add(new
                    {
                        resource_id      = dr["resource_id"],
                        priority_urgency = dr["priority_urgency"]
                    });
                }
            }

            result.Data = new { tickets = list };

            return(result);
        }
示例#7
0
        public static object HandleRequest(HttpContextBase context, IProvider provider)
        {
            string action = context.Request["Action"].ToString();

            int resourceId = Utility.ConvertTo(context.Request["ResourceID"], 0);
            int clientId   = Utility.ConvertTo(context.Request["ClientID"], 0);
            int ticketId   = Utility.ConvertTo(context.Request["TicketID"], 0);

            string command = Utility.ConvertTo(context.Request["Command"], string.Empty);
            string message = string.Empty;

            object        result = null;
            GenericResult gr;

            var res         = provider.Scheduler.Reservation.GetResource(resourceId);
            var currentUser = context.CurrentUser(provider);

            var dataSession = provider.DataAccess.Session;

            switch (action)
            {
            case "SaveReservationHistory":
                throw new NotImplementedException();

            case "get-tool-engineers":
                gr = new GenericResult();
                GetToolEngineers(provider, res, gr);
                result = gr;
                break;

            case "add-tool-engineer":
                gr = new GenericResult();
                AddToolEngineer(dataSession, res, dataSession.Single <Client>(clientId), gr);
                GetToolEngineers(provider, res, gr);
                result = gr;
                break;

            case "delete-tool-engineer":
                gr = new GenericResult();
                DeleteToolEngineer(dataSession, res, dataSession.Single <Client>(clientId), gr);
                GetToolEngineers(provider, res, gr);
                result = gr;
                break;

            case "get-buildings":
                var buildings = dataSession.Query <Building>().Where(x => x.BuildingIsActive).ToList();
                result = GetBuildings(res, buildings);
                break;

            case "get-labs":
                int buildingId = Utility.ConvertTo(context.Request["BuildingID"], 0);
                var labs       = dataSession.Query <Lab>().Where(x => x.Building.BuildingID == buildingId).ToList();
                result = GetLabs(res, labs);
                break;

            case "get-proctechs":
                int labId     = Utility.ConvertTo(context.Request["LabID"], 0);
                var procTechs = dataSession.Query <ProcessTech>().Where(x => x.Lab.LabID == labId).ToList();
                result = GetProcessTechs(res, procTechs);
                break;

            case "add-resource":
                result = AddResource(dataSession, context);
                break;

            case "upload-image":
                result = UploadImage(context);
                break;

            case "helpdesk-info":
                result = HelpdeskInfo(provider.Scheduler.Resource.GetResource(resourceId));
                break;

            case "helpdesk-list-tickets":
                result = HelpdeskListTickets(provider.Scheduler.Resource.GetResource(resourceId));
                break;

            case "helpdesk-detail":
                result = HelpdeskDetail(ticketId, currentUser);
                break;

            case "helpdesk-post-message":
                message = Utility.ConvertTo(context.Request["Message"], string.Empty);
                message = $"Posted from scheduler by: {currentUser.DisplayName} ({currentUser.Email})\n----------------------------------------\n{message}";
                result  = HelpdeskPostMessage(ticketId, message, currentUser);
                break;

            case "send-hardware-issue-email":
                message = Utility.ConvertTo(context.Request["message"], string.Empty);
                string subject = Utility.ConvertTo(context.Request["subject"], string.Empty);
                int    sent    = HelpdeskUtility.SendHardwareIssueEmail(res, currentUser.ClientID, subject, message);
                result = new GenericResult()
                {
                    Success = sent > 0, Message = $"Emails sent: {sent}", Data = null, Log = null
                };
                break;

            case "interlock":
                bool state    = Utility.ConvertTo(context.Request["State"], false);
                int  duration = Utility.ConvertTo(context.Request["Duration"], 0);
                uint d        = (duration >= 0) ? (uint)duration : 0;
                result = HandleInterlockRequest(provider, command, resourceId, state, d);
                break;

            case "test":
                result = new GenericResult()
                {
                    Success = true, Message = $"current client: {currentUser.ClientID}", Data = null, Log = null
                };
                break;

            default:
                result = new GenericResult
                {
                    Success = false,
                    Message = "Invalid action."
                };
                break;
            }

            return(result);
        }