Exemplo n.º 1
0
        public ActionResult AssignTickets(int id)
        {
            var model = new TicketAssignViewModel();

            model.Id = id;
            var ticket = db.Tickets.FirstOrDefault(t => t.Id == id);

            model.Developers = RoleManager("Developer");

            var userIdsAssignedToTicket = ticket.Users.Select(t => t.Id).ToList();

            model.DeveloperList = new SelectList(model.Developers, "Id", "FullName", userIdsAssignedToTicket);

            return(View(model));
        }
Exemplo n.º 2
0
        public ActionResult AssignDevelopers(TicketAssignViewModel model)
        {
            var ticket = db.Tickets.FirstOrDefault(p => p.Id == model.Id);

            ticket.AssignId = model.SelectedUser;
            db.SaveChanges();

            // Send Notification
            if (ticket.AssignId != null)
            {
                EmailSendingExtensions.SendNotification(ticket, "Assign");
            }

            return(RedirectToAction("Index"));
        }
Exemplo n.º 3
0
        public ActionResult AssignTickets(TicketAssignViewModel model)
        {
            var ticket = db.Tickets.FirstOrDefault(p => p.Id == model.Id);

            if (model.SelectedUsers != null)
            {
                foreach (var userId in model.SelectedUsers)
                {
                    var user = db.Users.FirstOrDefault(p => p.Id == userId);
                    ticket.AssigneeId = userId;
                }
            }
            //STEP 4: Save changes to the database
            db.SaveChanges();
            return(RedirectToAction("Index"));
        }
        public ActionResult TicketAssignToDeveloper(TicketAssignViewModel model)
        {
            //STEP 1: Find the project
            var ticket = db.Tickets.FirstOrDefault(t => t.Id == model.Id);

            ////STEP 2: Remove all assigned users from ticket
            //var assignedUsers = ticket.Users.ToList();
            //foreach (var userA in assignedUsers)
            //{
            //    ticket.Users.Remove(userA);
            //}

            //STEP 3: Assign users to the ticket
            if (model.SelectedUsers != null)
            {
                foreach (var users in model.SelectedUsers)
                {
                    var user = db.Users.FirstOrDefault(t => t.Id == users);
                    ticket.Users.Add(user);
                    ticket.AssigneeId = user.Id;
                }
            }
            //STEP 4: Save changes to the database
            if (ticket.AssigneeId != null)
            {
                var user = db.Users.FirstOrDefault(p => p.Id == ticket.AssigneeId);
                //Plug in your email service here to send an email.
                var newEmailService = new PersonalEmail();
                var newMail         = new MailMessage(WebConfigurationManager.AppSettings["emailto"], user.Email)
                {
                    Body       = "You are assigned to new ticket, check your ticket",
                    Subject    = "Check your ticket",
                    IsBodyHtml = true
                };
                newEmailService.Warning(newMail);
            }
            db.SaveChanges();
            return(RedirectToAction("Index"));
        }
Exemplo n.º 5
0
        public ActionResult AssignTickets(TicketAssignViewModel model)
        {
            //STEP 1: Find the Ticket
            var ticket = db.Tickets.FirstOrDefault(t => t.Id == model.Id);

            //STEP 2: Remove all assigned users from this ticket
            var assignedUsers = ticket.Users.ToList();

            foreach (var user in assignedUsers)
            {
                ticket.Users.Remove(user);
            }

            //STEP 3: Assign users to the ticket
            if (model.SelectedDeveloper != null)
            {
                foreach (var userId in model.SelectedDeveloper)
                {
                    var user = db.Users.FirstOrDefault(t => t.Id == userId);

                    ticket.Users.Add(user);
                    ticket.AssignedToUserId = user.Id;
                }
            }

            //STEP 4: Save changes to the database

            db.SaveChanges();

            if (ticket.AssignedToUserId != null)
            {
                Notify(ticket);
            }

            return(RedirectToAction("Index"));
        }
Exemplo n.º 6
0
        public async Task <ActionResult> Unassign([Bind(Include = "UserId,ticketId")] TicketAssignViewModel model)
        {
            Ticket ticket = db.Tickets.Find(model.ticketId);

            var userId      = User.Identity.GetUserId();
            var currentUser = db.Users.Find(userId);

            if (!URManager.UserIsInRole(userId, "Administrator"))
            {
                if (!(ticket.Project.InChargeOfId == userId))
                {
                    return(RedirectToAction("Login", "Account"));
                }
            }

            if ("Unassigned" != db.TicketStatuses.Find(ticket.TicketStatusId).Name)
            {
                TicketHistoryEvent th = new TicketHistoryEvent
                {
                    TicketId    = ticket.Id,
                    Property    = "Status",
                    NewValue    = "Unassigned",
                    OldValue    = db.TicketStatuses.Find(ticket.TicketStatusId).Name,
                    ChangedDate = new DateTimeOffset(DateTime.Now, TimeZoneInfo.Local.GetUtcOffset(DateTime.Now)),
                    UserId      = User.Identity.GetUserId()
                };
                db.TicketHistoryEvents.Add(th);
                db.SaveChanges();
            }

            var user = db.Users.Find(model.UserId);

            if (!(ticket.AssignedToId == null || ticket.AssignedToId == "" || ticket.AssignedToId == "N/A"))
            {
                TicketHistoryEvent th1 = new TicketHistoryEvent
                {
                    TicketId    = ticket.Id,
                    Property    = "Assigned To",
                    NewValue    = "N/A",
                    OldValue    = db.Users.Find(ticket.AssignedToId).FirstName + " " + db.Users.Find(ticket.AssignedToId).LastName,
                    ChangedDate = new DateTimeOffset(DateTime.Now, TimeZoneInfo.Local.GetUtcOffset(DateTime.Now)),
                    UserId      = User.Identity.GetUserId()
                };
                db.TicketHistoryEvents.Add(th1);
                db.SaveChanges();

                //email notification
                try
                {
                    var from  = "ReSolve Bugtracker<*****@*****.**>";
                    var to    = db.Users.Find(ticket.AssignedToId).Email;
                    var email = new MailMessage(from, to)
                    {
                        Subject    = "You were unassigned",
                        Body       = $"You were unassigned from ticket: <strong>{ticket.Title}</strong> by {currentUser.FirstName} {currentUser.LastName}.",
                        IsBodyHtml = true
                    };
                    var svc = new PersonalEmail();
                    await svc.SendAsync(email);

                    ViewBag.Message = "Email has been sent";
                }
                catch (Exception e)
                {
                    Console.WriteLine(e.Message);
                    await Task.FromResult(0);
                }
            }

            ticket.AssignedToId = null;
            db.Entry(ticket).Property("AssignedToId").IsModified = true;
            db.SaveChanges();
            int ticketStatusId = db.TicketStatuses.FirstOrDefault(ts => ts.Name == "Unassigned").Id;

            ticket.TicketStatusId = ticketStatusId;
            db.Entry(ticket).Property("TicketStatusId").IsModified = true;
            db.SaveChanges();

            return(RedirectToAction("Details", new { id = ticket.Id }));
        }
Exemplo n.º 7
0
        public async Task <ActionResult> Assign([Bind(Include = "UserId,ticketId")] TicketAssignViewModel model)
        {
            Ticket ticket      = db.Tickets.Find(model.ticketId);
            var    currentUser = db.Users.Find(User.Identity.GetUserId());

            //make sure user is eligable for assignment
            if (ModelState.IsValid && URManager.UsersInRole("Developer").Where(u => ticket.Project.Users.Select(u1 => u1.Id).Contains(u.Id)).Select(u2 => u2.Id).Contains(model.UserId))
            {
                if ("Assigned" != db.TicketStatuses.Find(ticket.TicketStatusId).Name)
                {
                    TicketHistoryEvent th = new TicketHistoryEvent
                    {
                        TicketId    = ticket.Id,
                        Property    = "Status",
                        NewValue    = "Assigned",
                        OldValue    = db.TicketStatuses.Find(ticket.TicketStatusId).Name,
                        ChangedDate = new DateTimeOffset(DateTime.Now, TimeZoneInfo.Local.GetUtcOffset(DateTime.Now)),
                        UserId      = User.Identity.GetUserId()
                    };
                    db.TicketHistoryEvents.Add(th);
                    db.SaveChanges();
                }

                var user = db.Users.Find(model.UserId);
                if (ticket.AssignedToId == null || ticket.AssignedToId == "" || ticket.AssignedToId == "N/A")
                {
                    TicketHistoryEvent th1 = new TicketHistoryEvent
                    {
                        TicketId    = ticket.Id,
                        Property    = "Assigned To",
                        NewValue    = user.FirstName + " " + user.LastName,
                        OldValue    = "N/A",
                        ChangedDate = new DateTimeOffset(DateTime.Now, TimeZoneInfo.Local.GetUtcOffset(DateTime.Now)),
                        UserId      = User.Identity.GetUserId()
                    };
                    db.TicketHistoryEvents.Add(th1);
                    db.SaveChanges();
                }
                else if (user.FirstName + " " + user.LastName != db.Users.Find(ticket.AssignedToId).FirstName + " " + db.Users.Find(ticket.AssignedToId).LastName)
                {
                    TicketHistoryEvent th1 = new TicketHistoryEvent
                    {
                        TicketId    = ticket.Id,
                        Property    = "Assigned To",
                        NewValue    = user.FirstName + " " + user.LastName,
                        OldValue    = db.Users.Find(ticket.AssignedToId).FirstName + " " + db.Users.Find(ticket.AssignedToId).LastName,
                        ChangedDate = new DateTimeOffset(DateTime.Now, TimeZoneInfo.Local.GetUtcOffset(DateTime.Now)),
                        UserId      = User.Identity.GetUserId()
                    };
                    db.TicketHistoryEvents.Add(th1);
                    db.SaveChanges();

                    //email notification
                    try
                    {
                        var from  = "ReSolve Bugtracker<*****@*****.**>";
                        var to    = db.Users.Find(ticket.AssignedToId).Email;
                        var email = new MailMessage(from, to)
                        {
                            Subject    = "You were unassigned",
                            Body       = $"You were unassigned from ticket: <strong>{ticket.Title}</strong> by {currentUser.FirstName} {currentUser.LastName}.",
                            IsBodyHtml = true
                        };
                        var svc = new PersonalEmail();
                        await svc.SendAsync(email);

                        ViewBag.Message = "Email has been sent";
                    }
                    catch (Exception e)
                    {
                        Console.WriteLine(e.Message);
                        await Task.FromResult(0);
                    }
                }

                ticket.AssignedToId = model.UserId;
                db.Entry(ticket).Property("AssignedToId").IsModified = true;
                db.SaveChanges();
                int ticketStatusId = db.TicketStatuses.FirstOrDefault(ts => ts.Name == "Assigned").Id;
                ticket.TicketStatusId = ticketStatusId;
                db.Entry(ticket).Property("TicketStatusId").IsModified = true;
                db.SaveChanges();

                //email notification
                try
                {
                    var from  = "ReSolve Bugtracker<*****@*****.**>";
                    var to    = user.Email;
                    var email = new MailMessage(from, to)
                    {
                        Subject    = "New Ticket Assignment",
                        Body       = $"You were assigned to ticket: <strong>{ticket.Title}</strong> by {currentUser.FirstName} {currentUser.LastName}. Ticket Details can be found <a href='http://kferretti-bugtracker.azurewebsites.net/Tickets/Details/{ticket.Id}'>here</a>.",
                        IsBodyHtml = true
                    };
                    var svc = new PersonalEmail();
                    await svc.SendAsync(email);

                    ViewBag.Message = "Email has been sent";
                }
                catch (Exception e)
                {
                    Console.WriteLine(e.Message);
                    await Task.FromResult(0);
                }
            }

            return(RedirectToAction("Details", new { id = ticket.Id }));
        }