Example #1
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();
        }
Example #2
0
        public static CreateTicketResult CreateTicket(IClient currentUser, IResource res, IReservation rsv, int clientId, string reservationText, string subjectText, string messageText, string ticketType, Uri requestUri)
        {
            TicketPriorty pri = TicketPriortyFromString(ticketType);

            string bodyText = GetMessageBody(res, rsv, clientId, reservationText, messageText, ticketType, requestUri);

            Helpdesk.Service service = new Helpdesk.Service(ApiUrl, ApiKey);

            IClient primary;

            if (currentUser.PrimaryOrg)
            {
                primary = currentUser;
            }
            else
            {
                primary = ServiceProvider.Current.Data.Client.GetPrimary(currentUser.ClientID);
            }

            if (primary != null)
            {
                CreateTicketResult result = service.CreateTicket
                                            (
                    resourceId: res.ResourceID,
                    name: currentUser.DisplayName,
                    email: primary.Email,
                    queue: res.HelpdeskEmail,
                    subject: subjectText,
                    message: bodyText,
                    priority: pri
                                            );

                int sent = SendHardwareIssueEmail(res, rsv, clientId, reservationText, subjectText, messageText, pri, requestUri);

                result.HardwareTicketEmailsSent = sent;

                return(result);
            }
            else
            {
                return(new CreateTicketResult(new Exception($"Cannot find primary ClientOrg for ClientID {currentUser.ClientID}")));
            }
        }