public async Task <ActionResult> Edit([Bind(Include = "Id,Title,Created,Updated,ProjectId,TicketTypeId,TicketPriorityId,TicketStatusId,OwnerUserId,AssignedToUserId")] Ticket ticket)
        {
            if (ModelState.IsValid)
            {
                HistoryHelper historyHelper = new HistoryHelper();

                StringBuilder updateMessage = new StringBuilder();

                var oldTicketInfo = db.Tickets.AsNoTracking().FirstOrDefault(t => t.Id == ticket.Id);

                if (oldTicketInfo.Title != ticket.Title)
                {
                    historyHelper.AddHistory(ticket.Id, "Title", oldTicketInfo.Title, ticket.Title, User.Identity.GetUserId());
                    updateMessage.AppendFormat("Ticket Title: {0}, ", ticket.Title);
                }
                if (oldTicketInfo.TicketTypeId != ticket.TicketTypeId)
                {
                    var oldTicketType = db.TicketTypes.Find(oldTicketInfo.TicketTypeId).Name;
                    var newTicketType = db.TicketTypes.Find(ticket.TicketTypeId).Name;
                    historyHelper.AddHistory(ticket.Id, "Ticket Type", oldTicketType, newTicketType, User.Identity.GetUserId());
                    updateMessage.AppendFormat("Ticket Type: {0}, ", ticket.TicketTypeId);
                }
                if (oldTicketInfo.TicketPriorityId != ticket.TicketPriorityId)
                {
                    var oldTicketPriority = db.TicketPriorities.Find(oldTicketInfo.TicketPriorityId).Name;
                    var newTicketPriority = db.TicketPriorities.Find(ticket.TicketPriorityId).Name;
                    historyHelper.AddHistory(ticket.Id, "Ticket Type", oldTicketPriority, newTicketPriority, User.Identity.GetUserId());
                    updateMessage.AppendFormat("Ticket Priority: {0}, ", ticket.TicketTypeId);
                }

                ticket.Updated = DateTime.Now;
                db.SaveChanges();
                // Add Notifcations

                var developer = db.Users.Find(ticket.AssignedToUserId);
                if (developer != null && developer.Email != null)
                {
                    var svc = new EmailService();
                    var msg = new IdentityMessage();
                    msg.Destination = developer.Email;
                    msg.Subject     = " Aj Bug Tracker Update:" + ticket.Title;
                    msg.Body        = ("The following items have been updated  the :" + ticket.Title + updateMessage);
                    await svc.SendAsync(msg);
                }

                return(RedirectToAction("Index"));
            }

            ViewBag.AssignedToUserId = new SelectList(db.Users, "Id", "FirstName", ticket.AssignedToUserId);
            ViewBag.OwnerUserId      = new SelectList(db.Users, "Id", "FirstName", ticket.OwnerUserId);
            ViewBag.ProjectId        = new SelectList(db.Projects, "Id", "Name", ticket.ProjectId);
            ViewBag.TicketPriorityId = new SelectList(db.TicketPriorities, "Id", "Name", ticket.TicketPriorityId);
            ViewBag.TicketStatusId   = new SelectList(db.TicketStatuses, "Id", "Name", ticket.TicketStatusId);
            ViewBag.TicketTypeId     = new SelectList(db.TicketTypes, "Id", "Name", ticket.TicketTypeId);
            return(View(ticket));
        }
        public async Task <ActionResult> EditDash([Bind(Include = "Id,Title,Description,Created,ProjectId,TicketTypeId,TicketPriorityId,TicketStatusId,OwnerUserId,AssignedToUserId")] Ticket ticket)
        {
            if (ModelState.IsValid)
            {
                var notificationHelper = new NotificationHelper();
                var historyHelper      = new HistoryHelper();
                var currentStatus      = ticket.TicketStatusId;

                if (currentStatus == 0)
                {
                    ticket.TicketStatusId = db.TicketStatuses.FirstOrDefault(t => t.Name == "In Progress").Id;
                }

                //reference old Ticket
                var oldTicket = db.Tickets.AsNoTracking().FirstOrDefault(t => t.Id == ticket.Id);

                if (User.Identity.GetUserId() == "db9a774b-807c-4b9b-9b22-34c191872996")
                {
                    if (ticket.AssignedToUserId == "5f84068f-4213-4d02-81a4-21936ae10cdc" || ticket.OwnerUserId == "60f316c5-536c-4f06-83d3-38a555febc29")
                    {
                        ticket.Updated         = DateTime.Now;
                        db.Entry(ticket).State = EntityState.Modified;
                        db.SaveChanges();

                        //compare to the incoming Ticket (ticket)
                        notificationHelper.Notify2(oldTicket, ticket);
                        historyHelper.AddHistory(oldTicket, ticket);

                        return(RedirectToAction("TicketsDashboard"));
                    }
                    else
                    {
                        return(RedirectToAction("InvalidAttempt", "Home"));
                    }
                }

                ticket.Updated         = DateTime.Now;
                db.Entry(ticket).State = EntityState.Modified;
                db.SaveChanges();

                //compare to the incoming Ticket (ticket)
                notificationHelper.Notify2(oldTicket, ticket);
                historyHelper.AddHistory(oldTicket, ticket);

                return(RedirectToAction("TicketsDashboard"));
            }
            ViewBag.AssignedToUserId = new SelectList(db.Users, "Id", "FirstName", ticket.AssignedToUserId);
            ViewBag.OwnerUserId      = new SelectList(db.Users, "Id", "FirstName", ticket.OwnerUserId);
            ViewBag.ProjectId        = new SelectList(db.Projects, "Id", "Name", ticket.ProjectId);
            ViewBag.TicketPriorityId = new SelectList(db.TicketPriorities, "Id", "Name", ticket.TicketPriorityId);
            ViewBag.TicketStatusId   = new SelectList(db.TicketStatuses, "Id", "Name", ticket.TicketStatusId);
            ViewBag.TicketTypeId     = new SelectList(db.TicketTypes, "Id", "Name", ticket.TicketTypeId);
            return(View(ticket));
        }
        public async System.Threading.Tasks.Task <ActionResult> Delete(int id)
        {
            Ticket        ticket       = db.Tickets.Find(id);
            var           strLoginUser = User.Identity.GetUserId();
            HistoryHelper audit        = new HistoryHelper();

            audit.AddHistory(ticket.Id, "Status", ticket.TicketStatus.Name, "Resolved", strLoginUser);
            ticket.TicketStatusId = 4;

            // Sends a notification
            var developer = db.Users.Find(ticket.AssignedToUserId);

            if (developer != null && developer.Email != null)
            {
                var svc = new EmailService();
                var msg = new IdentityMessage();
                msg.Destination = developer.Email;
                msg.Subject     = " Aj's Bug Tracker Update: " + ticket.Title;
                msg.Body        = ("Ticket ID: " + ticket.Id + " - " + ticket.Title + "has been resolved");
                await svc.SendAsync(msg);
            }

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

            return(RedirectToAction("Index", new { Id = ticket.Id }));
        }
        public ActionResult Edit([Bind(Include = "Id,ProjectId,Title,Description,Created,TicketTypeId,TicketPriorityId,TicketStatusId,OwnerUserId,AssignedToUserId")] Ticket ticket)
        {
            if (ModelState.IsValid)
            {
                //getting a reference to the old ticket somehow
                var oldTicket = db.Tickets.AsNoTracking().FirstOrDefault(t => t.Id == ticket.Id);

                ticket.Updated         = DateTime.Now;
                db.Entry(ticket).State = EntityState.Modified;
                db.SaveChanges();

                var notificationHelper = new NotificationHelper();
                notificationHelper.Notify(oldTicket, ticket);
                var historyHelper = new HistoryHelper();
                historyHelper.AddHistory(oldTicket, ticket);


                return(RedirectToAction("Index", "Tickets"));
            }
            ViewBag.AssignedToUserId = new SelectList(db.Users, "Id", "FirstName", ticket.AssignedToUserId);
            ViewBag.OwnerUserId      = new SelectList(db.Users, "Id", "FirstName", ticket.OwnerUserId);

            ViewBag.ProjectId        = new SelectList(db.Projects, "Id", "Name", ticket.ProjectId);
            ViewBag.TicketPriorityId = new SelectList(db.TicketPriorities, "Id", "Name", ticket.TicketPriorityId);
            ViewBag.TicketStatusId   = new SelectList(db.TicketStatuses, "Id", "Name", ticket.TicketStatusId);
            ViewBag.TicketTypeId     = new SelectList(db.TicketTypes, "Id", "Name", ticket.TicketTypeId);
            return(View(ticket));
        }