Beispiel #1
0
        private bool ChangeTeller(Ticket ticket, CreateEditTicketViewModel data, PrevValue prevInput)
        {
            ////reflection
            //ticket.GetType().GetProperties();

            if (prevInput == PrevValue.Title)
            {
                return(ticket.Title != data.Title);
            }
            else if (prevInput == PrevValue.Description)
            {
                return(ticket.Description != data.Description);
            }
            else if (prevInput == PrevValue.ProjectId)
            {
                return(ticket.ProjectId != Convert.ToInt32(data.GetProjectBelong));
            }
            else if (prevInput == PrevValue.TicketPriorityId)
            {
                return(ticket.TicketPriorityId != Convert.ToInt32(data.GetTicketPriority));
            }
            else if (prevInput == PrevValue.TicketTypeId)
            {
                return(ticket.TicketTypeId != Convert.ToInt32(data.GetTicketType));
            }
            else if (prevInput == PrevValue.TicketStatusId)
            {
                return(ticket.TicketStatusId != Convert.ToInt32(data.GetTicketStatus));
            }

            return(false);
        }
Beispiel #2
0
        private CreateEditTicketViewModel MStateNotValid(int?tkId)
        {
            var thisUserId = User.Identity.GetUserId();
            var model      = new CreateEditTicketViewModel();


            model.TicketType     = new SelectList(DbContext.TicketTypes, "Id", "Name");
            model.TicketPriority = new SelectList(DbContext.TicketPriorities, "Id", "Name");

            if (!IsAdmin() || !IsProjectManager())
            {
                var holdPjts = AppHepler.GetProjects4CurrentUserById(thisUserId);
                model.ProjectBelong = new SelectList(holdPjts, "Id", "Name");
            }
            else
            {
                var allPjts = AppHepler.GetAllProjects();
                model.ProjectBelong = new SelectList(allPjts, "Id", "Name");
                model.TicketStatus  = new SelectList(DbContext.TicketStatuses, "Id", "Name");
            }

            if (tkId.HasValue)
            {
                var thisTicket = AppHepler.GetTicketById(tkId);
                if (IsAdmin() || IsProjectManager())
                {
                    model.GetTicketStatus = Convert.ToString(thisTicket.TicketStatusId);
                }
                model.GetProjectBelong  = Convert.ToString(thisTicket.ProjectId);
                model.GetTicketType     = Convert.ToString(thisTicket.TicketTypeId);
                model.GetTicketPriority = Convert.ToString(thisTicket.TicketPriorityId);
            }

            return(model);
        }
Beispiel #3
0
        public ActionResult Edit(int?id)
        {
            if (!id.HasValue)
            {
                return(RedirectToAction(nameof(TicketController.Index)));
            }

            var ticket = AppHepler.GetTicketById(id);

            if (ticket == null)
            {
                return(RedirectToAction(nameof(TicketController.Index)));
            }

            var appUserId = User.Identity.GetUserId();

            // Check OwnerShip
            var result = OwnershipCheckEdit(appUserId, ticket);

            if (result == nameof(TicketController.IndexSubAll))
            {
                return(RedirectToAction(nameof(TicketController.IndexSubAll)));
            }
            else if (result == nameof(TicketController.IndexDevAll))
            {
                return(RedirectToAction(nameof(TicketController.IndexDevAll)));
            }


            var ownedPjts = AppHepler.GetProjects4CurrentUserById(appUserId);

            var model = new CreateEditTicketViewModel();

            model.Title             = ticket.Title;
            model.Description       = ticket.Description;
            model.TicketType        = new SelectList(DbContext.TicketTypes, "Id", "Name");
            model.TicketPriority    = new SelectList(DbContext.TicketPriorities, "Id", "Name");
            model.GetTicketPriority = Convert.ToString(ticket.TicketPriorityId);
            model.GetTicketType     = Convert.ToString(ticket.TicketTypeId);

            if (IsAdmin() || IsProjectManager())
            {
                var allPjts = AppHepler.GetAllProjects();
                model.ProjectBelong   = new SelectList(allPjts, "Id", "Name");
                model.TicketStatus    = new SelectList(DbContext.TicketStatuses, "Id", "Name");
                model.GetTicketStatus = Convert.ToString(ticket.TicketStatusId);
            }
            else
            {
                model.ProjectBelong = new SelectList(ownedPjts, "Id", "Name");
            }

            model.GetProjectBelong = Convert.ToString(ticket.ProjectId);

            return(View(model));
        }
Beispiel #4
0
        public ActionResult Edit(int?id)
        {
            Ticket ticket  = db.Tickets.Find(id);
            var    userId  = User.Identity.GetUserId();
            var    project = ticket.Project;
            string projectName;
            //var projects = new List<Project>();
            var developers        = "Developer".UsersInRole();
            var projectDevelopers = new List <ApplicationUser>();

            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }

            if (ticket == null)
            {
                return(HttpNotFound());
            }

            //if (User.IsInRole("Administrator"))
            //    projects = db.Projects.Where(p => p.IsResolved != true).ToList();
            //else
            //    projects = userId.ListUserProjects().Where(p => p.IsResolved != true).ToList();

            //select project developers
            if (project != null)
            {
                foreach (var dev in developers.ToList())
                {
                    if (project.Users.Any(u => u.Id == dev.Id))
                    {
                        projectDevelopers.Add(dev);
                    }
                }
                projectName = project.Name;
            }
            else
            {
                projectName = "";
            }

            var model = new CreateEditTicketViewModel()
            {
                Ticket      = ticket,
                ProjectName = projectName,
                //Projects = new SelectList(projects, "Id", "Name"),
                Developers = new SelectList(projectDevelopers, "Id", "FullName", ticket.AssignedTo),
                Priorities = new SelectList(db.Priorities.OrderBy(p => p.Id), "Id", "Name", ticket.Priority),
                Statuses   = new SelectList(db.Statuses, "Id", "Name", ticket.Status),
                Phases     = new SelectList(db.TicketPhases, "Id", "Name", ticket.Phase),
                Actions    = new SelectList(db.TicketActions, "Id", "Name", ticket.Action)
            };

            return(View(model));
        }
Beispiel #5
0
        public ActionResult Create()
        {
            var appUserId = User.Identity.GetUserId();
            var subPjts   = AppHepler.GetProjects4CurrentUserById(appUserId);

            var model = new CreateEditTicketViewModel();

            model.ProjectBelong   = new SelectList(subPjts, "Id", "Name");
            model.TicketType      = new SelectList(DbContext.TicketTypes, "Id", "Name");
            model.TicketPriority  = new SelectList(DbContext.TicketPriorities, "Id", "Name");
            model.GetTicketStatus = Convert.ToString(AppHepler.GetDefaultTicketStatus());
            return(View(model));
        }
Beispiel #6
0
        // GET: Tickets/Create
        public ActionResult Create(int?id)
        {
            var    project = db.Projects.Find(id);
            var    userId  = User.Identity.GetUserId();
            string projectName;
            var    projectId         = project.Id;
            var    developers        = "Developer".UsersInRole().ToList();
            var    projectDevelopers = new List <ApplicationUser>();

            //select project developers
            if (project != null)
            {
                foreach (var dev in developers)
                {
                    if (project.Users.Any(u => u.Id == dev.Id))
                    {
                        projectDevelopers.Add(dev);
                    }
                }
                projectName = project.Name;
            }
            else
            {
                projectName = "";
            }

            var model = new CreateEditTicketViewModel()
            {
                Ticket      = new Ticket(),
                ProjectName = projectName,
                ProjectId   = project.Id,
                Developers  = new SelectList(projectDevelopers, "Id", "FullName"),
                Priorities  = new SelectList(db.Priorities.OrderBy(p => p.Id), "Id", "Name"),
                Statuses    = new SelectList(db.Statuses, "Id", "Name"),
                Phases      = new SelectList(db.TicketPhases, "Id", "Name"),
                Actions     = new SelectList(db.TicketActions, "Id", "Name")
            };

            return(View(model));
        }
Beispiel #7
0
 public ActionResult Edit(int id, CreateEditTicketViewModel formData)
 {
     return(SaveTicket(id, formData));
 }
Beispiel #8
0
        private ActionResult SaveTicket(int?id, CreateEditTicketViewModel formData)
        {
            if (!ModelState.IsValid)
            {
                return(View(MStateNotValid(id)));
            }

            var appUserId = User.Identity.GetUserId();

            Ticket ticketForSaving;

            if (!id.HasValue)
            {
                ticketForSaving                = new Ticket();
                ticketForSaving.DateCreated    = DateTime.Now;
                ticketForSaving.CreatorId      = appUserId;
                ticketForSaving.TicketStatusId = AppHepler.GetDefaultTicketStatus();
                DbContext.Tickets.Add(ticketForSaving);
            }
            else
            {
                ticketForSaving = AppHepler.GetTicketById(id);

                if (ticketForSaving == null)
                {
                    return(RedirectToAction(nameof(TicketController.Index)));
                }

                // Check OwnerShip
                var result = OwnershipCheckEdit(appUserId, ticketForSaving);

                if (result == nameof(TicketController.IndexSubAll))
                {
                    return(RedirectToAction(nameof(TicketController.IndexSubAll)));
                }
                else if (result == nameof(TicketController.IndexDevAll))
                {
                    return(RedirectToAction(nameof(TicketController.IndexDevAll)));
                }


                ticketForSaving.DateUpdated = DateTime.Now;

                if (IsAdmin() || IsProjectManager())
                {
                    if (formData.GetTicketStatus == null)
                    {
                        ModelState.AddModelError("", "Ticket Status is Required!");
                        return(View(MStateNotValid(id)));
                    }

                    var statusChanged = ChangeTeller(ticketForSaving, formData, PrevValue.TicketStatusId);

                    CreateHistory(ticketForSaving, HistoryProperty.TicketStatus,
                                  statusChanged, appUserId,
                                  ticketForSaving.TicketStatusId.ToString(), formData.GetTicketStatus);

                    ticketForSaving.TicketStatusId = Convert.ToInt32(formData.GetTicketStatus);
                }

                var subject = "Contents";
                var body    = $"One or more {subject} is/are edited";

                SendEmail(ticketForSaving, appUserId, subject, body);
            }

            if (id.HasValue)
            {
                var titleChanged = ChangeTeller(ticketForSaving, formData, PrevValue.Title);

                CreateHistory(ticketForSaving, HistoryProperty.TicketTitle,
                              titleChanged, appUserId,
                              ticketForSaving.Title, formData.Title);

                var descriptionChanged = ChangeTeller(ticketForSaving, formData, PrevValue.Description);

                CreateHistory(ticketForSaving, HistoryProperty.TicketDescription,
                              descriptionChanged, appUserId,
                              ticketForSaving.Description, formData.Description);

                var projectChanged = ChangeTeller(ticketForSaving, formData, PrevValue.ProjectId);

                CreateHistory(ticketForSaving, HistoryProperty.ProjectBelong,
                              projectChanged, appUserId,
                              ticketForSaving.ProjectId.ToString(), formData.GetProjectBelong);

                var ticketPriorityChanged = ChangeTeller(ticketForSaving, formData, PrevValue.TicketPriorityId);

                CreateHistory(ticketForSaving, HistoryProperty.TicketPriority,
                              ticketPriorityChanged, appUserId,
                              ticketForSaving.TicketPriorityId.ToString(), formData.GetTicketPriority);

                var ticketTypeChanged = ChangeTeller(ticketForSaving, formData, PrevValue.TicketTypeId);

                CreateHistory(ticketForSaving, HistoryProperty.TicketType,
                              ticketTypeChanged, appUserId,
                              ticketForSaving.TicketTypeId.ToString(), formData.GetTicketType);
            }

            ticketForSaving.Title            = formData.Title;
            ticketForSaving.Description      = formData.Description;
            ticketForSaving.ProjectId        = Convert.ToInt32(formData.GetProjectBelong);
            ticketForSaving.TicketPriorityId = Convert.ToInt32(formData.GetTicketPriority);
            ticketForSaving.TicketTypeId     = Convert.ToInt32(formData.GetTicketType);



            DbContext.SaveChanges();


            if (IsSubmitter())
            {
                return(RedirectToAction(nameof(TicketController.IndexSubAll)));
            }

            if (IsDeveloper())
            {
                return(RedirectToAction(nameof(TicketController.IndexDevAll)));
            }


            return(RedirectToAction(nameof(TicketController.Index)));
        }
Beispiel #9
0
 public ActionResult Create(CreateEditTicketViewModel formData)
 {
     return(SaveTicket(null, formData));
 }