示例#1
0
        public async Task<ActionResult> New(Ticket ticket, Guid tempId)
        {
            if (ticket.IsHtml)
            {
                ticket.Details = ticket.Details.StripHtmlWhenEmpty();
                if (string.IsNullOrEmpty(ticket.Details))
                {
                    ModelState.AddModelError("Details", "This field is required.");
                }
            }

            if (ModelState.IsValid)
            {
                try
                {
                    if (await CreateTicketAsync(ticket, tempId))
                    {
                        return RedirectToAction("Index", new { id = ticket.TicketId });
                    }
                }
                // ReSharper disable once EmptyGeneralCatchClause
                catch (DbEntityValidationException)
                {

                    //TODO: catch rule exceptions? or can annotations handle this fully now?
                }

            }
            ViewBag.TempId = tempId;
            await SetProjectInfoForModel(ticket);
            return View(ticket);
        }
示例#2
0
        public async Task<ActionResult> New()
        {

            var model = new Ticket
            {
                Owner = Context.SecurityProvider.CurrentUserId,
                IsHtml = Context.TicketDeskSettings.ClientSettings.GetDefaultTextEditorType() == "summernote"
            };

            await SetProjectInfoForModel(model);

            ViewBag.TempId = Guid.NewGuid();

            return View(model);
        }
 public TicketActivity GetValidTicketActivities(Ticket ticket)
 {
     if (!(IsTdAdministrator || IsTdHelpDeskUser || IsTdInternalUser))
     {
         throw new SecurityException("User is not authorized to read ticket data.");
     }
     var validTicketActivities = ticket.GetAvailableActivites(CurrentUserId);
     var allowedActivities = IsTdAdministrator
         ? GetAdministratorUserPermissions()
         : IsTdHelpDeskUser
             ? GetHelpDeskUserPermissions()
             : GetInternalUserPermissions();
     return (validTicketActivities & allowedActivities);
 }
 public bool IsTicketActivityValid(Ticket ticket, TicketActivity activity)
 {
     return GetValidTicketActivities(ticket).HasFlag(activity);
 }
示例#5
0
        private async Task<bool> CreateTicketAsync(Ticket ticket, Guid tempId)
        {

            Context.Tickets.Add(ticket);
            await Context.SaveChangesAsync();
            ticket.CommitPendingAttachments(tempId);

            return ticket.TicketId != default(int);
        }
示例#6
0
 private async Task SetProjectInfoForModel(Ticket ticket)
 {
     if (ticket.ProjectId == default(int))
     {
         var projects = await Context.Projects.ToListAsync();
         var isMulti = (projects.Count > 1);
         ViewBag.IsMultiProject = isMulti;
        
         //set to first project if only one project exists, otherwise use user's selected project
         ticket.ProjectId = (isMulti) ? await Context.UserSettingsManager.GetUserSelectedProjectIdAsync(Context) : projects.First().ProjectId; 
     }
 }
 private async Task SetProjectInfoForModel(Ticket ticket)
 {
     var projects = await Context.Projects.ToListAsync();
     var isMulti = (projects.Count > 1);
     ViewBag.IsMultiProject = isMulti;
 }
示例#8
0
 /// <summary>
 /// Gets the valid ticket activities.
 /// </summary>
 /// <remarks>
 /// This is a convienience method to provide a more natual api for the client. 
 /// It just calls the equivalent method from the security provider.
 /// </remarks>
 /// <param name="ticket">The ticket.</param>
 /// <returns>TicketActivity.</returns>
 public TicketActivity GetValidTicketActivities(Ticket ticket)
 {
     return SecurityProvider.GetValidTicketActivities(ticket);
 }
示例#9
0
 /// <summary>
 /// Determines whether the ticket activity is valid for the specified ticket.
 /// </summary>
 /// <remarks>
 /// This is a convienience method to provide a more natual api for the client. 
 /// It just calls the equivalent method from the security provider.
 /// </remarks>
 /// <param name="ticket">The ticket.</param>
 /// <param name="activity">The activity.</param>
 /// <returns><c>true</c> if the ticket activity valid for the specified ticket; otherwise, <c>false</c>.</returns>
 public bool IsTicketActivityValid(Ticket ticket, TicketActivity activity)
 {
     return SecurityProvider.IsTicketActivityValid(ticket, activity);
 }
示例#10
0
 private bool CheckSecurity(Ticket ticket, TicketActivity activity)
 {
     if (!IsTicketActivityValid(ticket, activity))
     {
         throw new SecurityException("User is not authorized to perform this activity.");
     }
     return true;
 }