Example #1
0
        public async Task <ActionResult> Edit([Bind(Include = "Id,Title,Body,Description,Created,ProjectId,TicketTypeId,TicketPriorityId,TicketStatusId,OwnerUserId,AssignedUserId")] Ticket ticket, IdentityMessage message, List <string> users)
        {
            var oldTicket = db.Tickets.AsNoTracking().FirstOrDefault(t => t.Id == ticket.Id);

            if (ModelState.IsValid)
            {
                var ticketUsers = ticketHelper.ListUsersOnTicket(ticket.Id);
                if (ticketUsers.Count > 0)
                {
                    foreach (var user in ticketUsers.ToList())
                    {
                        ticketHelper.RemoveUserFromTicket(user.Id, ticket.Id);
                    }
                }
                foreach (var userId in users)
                {
                    ticketHelper.AddUserToTicket(userId, ticket.Id);
                }
                ticket.Updated         = DateTimeOffset.Now;
                db.Entry(ticket).State = EntityState.Modified;
                db.SaveChanges();
                await TicketNotificationExtensions.TriggerNotifications(ticket, oldTicket);

                ticket.RecordChanges(oldTicket);
                return(RedirectToAction("Index"));
                //db.Tickets.Add(ticket);
                //db.Entry(ticket).State = EntityState.Modified;
                //db.SaveChanges();
                //if (string.IsNullOrEmpty(oldTicket.AssignedUserId) && !string.IsNullOrEmpty(ticket.AssignedUserId))
                //{
                //    ticket.TicketStatusId = db.TicketStatus.FirstOrDefault(t => t.Value == "Assigned").Id;
                //}
                //ticket.RecordChanges(oldTicket);
                //await ticket.TriggerNotifications(oldTicket);
                //return RedirectToAction("Details", "Tickets", new { id = ticket.Id });
            }

            ViewBag.UserId           = new SelectList(db.Users, "Id", "FirstName");
            ViewBag.ProjectId        = new SelectList(db.Projects, "Id", "Title", ticket.ProjectId);
            ViewBag.AssignedUserId   = new SelectList(db.Users, "Id", "FirstName", ticket.AssignedUserId);
            ViewBag.OwnerUserId      = new SelectList(db.Users, "Id", "FirstName", ticket.OwnerUserId);
            ViewBag.TicketPriorityId = new SelectList(db.TicketPriorities, "Id", "Name", ticket.TicketPriorityId);
            ViewBag.TicketStatusId   = new SelectList(db.TicketStatus, "Id", "Name", ticket.TicketStatusId);
            ViewBag.TicketTypeId     = new SelectList(db.TicketTypes, "Id", "Name", ticket.TicketTypeId);

            return(View(ticket));
        }
        public async Task <ActionResult> TicketAssign(string userId, List <int> AllTickets)
        {
            //Remove user from all tickets
            foreach (var ticket in ticketHelper.ListUserTickets(userId))
            {
                ticketHelper.RemoveUserFromTicket(userId, ticket.Id);//need to specify Id here because passing in entire ticket in foreach loop
            }

            //Add user to projects
            if (AllTickets != null)
            {
                foreach (var ticketId in AllTickets) //already using Id's here for variable projId so don't need to denote proj.Id below
                {
                    ticketHelper.AddUserToTicket(userId, ticketId);
                    await ticketHelper.AddTicketNotification(ticketId, "", userId);
                }
            }
            return(RedirectToAction("UserIndex"));
        }
        public ActionResult TicketAssign(string UserId, List <int> AllTickets)
        {
            TicketsHelper ticketHelper = new TicketsHelper();

            //First use the Project helper to remove this user from all Tickets
            foreach (var ticket in ticketHelper.ListUserTickets(UserId))
            {
                ticketHelper.RemoveUserFromTicket(UserId, ticket.Id);
            }
            //Next add the user to the selected Projects (AllTickets)
            if (AllTickets != null)
            {
                foreach (var ticketId in AllTickets)
                {
                    ticketHelper.AddUserToTicket(UserId, ticketId);
                }
            }
            return(RedirectToAction("UserIndex", "AdminUser"));
        }
        public async Task <ActionResult> TicketAssignment(List <int> tickets, string developers, IdentityMessage message, Ticket oldTicket, Ticket tick)
        {
            foreach (var ticket in tickets)
            {
                //Step 1: Unassign everyone from selected ticket
                var tickUsers = tickHelper.ListUsersOnTicket(ticket);
                if (tickUsers.Count > 0)
                {
                    foreach (var user in tickUsers)
                    {
                        tickHelper.RemoveUserFromTicket(user.Email, ticket);
                    }
                }
                //Step 2: Assign selected users to ticket
                tickHelper.AddUserToTicket(developers, ticket);
            }
            db.SaveChanges();
            await Notify.TriggerNotifications(tick, oldTicket);

            //Step 3: Take user somewhere else
            return(RedirectToAction("Index", "Tickets"));
        }