public IViewComponentResult Invoke()
        {
            var data = IncidentProcessor.LoadIncidents();
            List <IncidentModel> incidents = new List <IncidentModel>();

            foreach (var row in data)
            {
                incidents.Add(new IncidentModel
                {
                    ID       = row.ID,
                    Title    = row.Title,
                    Context  = row.Context,
                    Customer = row.Customer,
                    Employee_ID_CreatedBy = row.Employee_ID_CreatedBy,
                    Employee_ID_EndedBy   = row.Employee_ID_EndedBy,
                    CustomerEmail         = row.CustomerEmail,
                    DateTimeStart         = row.DateTimeStart,
                    DateTimeEnded         = row.DateTimeEnd,
                    Status = row.Status
                }
                              );
            }

            var sortedIncidents = incidents.Where(q => q.Status == "open").Take(3);

            return(View(sortedIncidents));
        }
        public IActionResult ViewIncidents()
        {
            var data = IncidentProcessor.LoadIncidents();
            List <IncidentModel> incidents = new List <IncidentModel>();

            foreach (var row in data)
            {
                incidents.Add(new IncidentModel
                {
                    ID       = row.ID,
                    Title    = row.Title,
                    Context  = row.Context,
                    Customer = row.Customer,
                    Employee_ID_CreatedBy = row.Employee_ID_CreatedBy,
                    Employee_ID_EndedBy   = row.Employee_ID_EndedBy,
                    CustomerEmail         = row.CustomerEmail,
                    DateTimeStart         = row.DateTimeStart,
                    DateTimeEnded         = row.DateTimeEnd,
                    Status = row.Status
                }
                              );
            }

            var sortedIncidents = incidents.OrderBy(q => q.Status.ToString().Length).ThenByDescending(q => q.DateTimeStart);

            return(View(sortedIncidents));
        }
 public IActionResult CloseIncident(int id)
 {
     IncidentProcessor.CloseIncident(
         id,
         HttpContext.GetCurrentEmployeeModel().Id
         );
     MailSender.CreateAndSendIncidentComplete();
     return(RedirectToAction("ViewIncidents", "Incident"));
 }
        public IActionResult DetailsIncident(int id)
        {
            int count                          = 0;
            var incidentData                   = IncidentProcessor.LoadIncidentById(id);
            var incidentEmployeeData           = IncidentEmployeeProcessor.LoadEmployeesByIncidentId(id);
            var incidentStepData               = IncidentStepProcessor.LoadStepsByIncidentId(id);
            List <IncidentStepModel> steps     = new List <IncidentStepModel>();
            List <EmployeeModel>     employees = new List <EmployeeModel>();

            foreach (var step in incidentStepData)
            {
                count++;
                steps.Add(new IncidentStepModel
                {
                    title                 = step.title,
                    context               = step.context,
                    datetimeEnd           = step.datetimeEnd,
                    datetimeStart         = step.datetimeStart,
                    employee_id_createdby = step.employee_id_createdby,
                    employee_id_endedby   = step.employee_id_endedby,
                    id          = step.id,
                    incident_id = step.incident_id,
                    status      = step.status,
                    stepnumber  = count
                }
                          );
            }

            foreach (var employee in incidentEmployeeData)
            {
                var data = EmployeeProcessor.GetUserById(employee.Employee_Id);
                employees.Add(new EmployeeModel
                {
                    Firstname          = data.Firstname,
                    Lastname           = data.Lastname,
                    ProfilePicturePath = data.ProfilePicturePath,
                    Id = data.ID
                }
                              );
            }
            IncidentDetailsViewModel incidentDetails = new IncidentDetailsViewModel
            {
                id            = id,
                Context       = incidentData.Context,
                Customer      = incidentData.Customer,
                CustomerEmail = incidentData.CustomerEmail,
                Title         = incidentData.Title,
                Status        = incidentData.Status,
                steps         = steps,
                employees     = employees
            };

            ViewData["webroot"] = _env.WebRootPath;
            return(View(incidentDetails));
        }
        public IActionResult EditIncident(int id)
        {
            var           incidentData = IncidentProcessor.LoadIncidentById(id);
            IncidentModel data         = new IncidentModel
            {
                Context       = incidentData.Context,
                Customer      = incidentData.Customer,
                CustomerEmail = incidentData.CustomerEmail,
                Title         = incidentData.Title,
                ID            = id
            };

            return(View(data));
        }
 public IActionResult CreateIncident(IncidentModel incident)
 {
     if (ModelState.IsValid)
     {
         IncidentProcessor.CreateIncident(
             incident.Title,
             incident.Context,
             incident.Customer,
             incident.CustomerEmail,
             HttpContext.GetCurrentEmployeeModel().Id
             );
         MailSender.CreateAndSendIncidentStart();
         return(RedirectToAction("ViewIncidents"));
     }
     return(View());
 }
        public IActionResult DeleteIncident(int id)
        {
            var steps             = IncidentStepProcessor.LoadStepsByIncidentId(id);
            var incidentEmployees = IncidentEmployeeProcessor.LoadEmployeesByIncidentId(id);

            foreach (var employee in incidentEmployees)
            {
                IncidentEmployeeProcessor.RemoveEmployeeFromIncident(id, employee.Employee_Id);
            }
            foreach (var step in steps)
            {
                IncidentStepProcessor.DeleteStep(step.id);
            }
            IncidentProcessor.DeleteIncident(id);
            return(RedirectToAction("ViewIncidents"));
        }
 public IActionResult EditIncident(IncidentModel model)
 {
     IncidentProcessor.EditIncident(model.ID, model.Title, model.Context, model.Customer, model.CustomerEmail);
     return(RedirectToAction("DetailsIncident", new { model.ID }));
 }