public override IActionResult Details(int Id)
        {
            TechnicalAssistance task = context
                                       .TechnicalAssistance
                                       .Where(t => t.TaskId == Id)
                                       .Include(t => t.ProblemType)
                                       .Include(t => t.AssignedBy)
                                       .Include(t => t.AssignedTo)
                                       .Include(t => t.AttendedBy)
                                       .FirstOrDefault();

            TechnicalAssistanceViewModel data = TaskToViewModel(task);

            if (task.AssignedTo != null)
            {
                ViewBag.AssignedToName = task.AssignedTo.Username;
            }

            if (task.AssignedBy != null)
            {
                ViewBag.AssignedByName = task.AssignedBy.Username;
            }

            if (task.AttendedBy != null)
            {
                ViewBag.AttendedByName = task.AttendedBy.Username;
            }

            if (data.ProblemTypeId != null)
            {
                ViewBag.ProblemName = context.ProblemTypes.Find(data.ProblemTypeId).ProblemName;
            }

            return(View(data));
        }
        private TechnicalAssistanceViewModel TaskToViewModel(TechnicalAssistance task)
        {
            TechnicalAssistanceViewModel viewModel = new TechnicalAssistanceViewModel();

            if (task.AssignedBy != null)
            {
                viewModel.AssignedByUserId = task.AssignedBy.UserId;
            }

            if (task.AssignedTo != null)
            {
                viewModel.AssignedToUserId = task.AssignedTo.UserId;
            }

            if (task.AttendedBy != null)
            {
                viewModel.AttendedByUserId = task.AttendedBy.UserId;
            }

            if (task.Employee != null)
            {
                viewModel.EmployeeId = task.Employee.EmployeeId;
            }

            viewModel.EndDate       = task.EndDate;
            viewModel.EstimatedTime = task.EstimatedTime;
            viewModel.ActualTime    = task.ActualTime;
            viewModel.Priority      = task.Priority;

            if (task.ProblemTypeId != null)
            {
                viewModel.ProblemTypeId = task.ProblemTypeId;
            }

            if (task.Source != null)
            {
                viewModel.SourceId = task.Source.SourceId;
            }

            viewModel.StartDate = task.StartDate;
            viewModel.State     = task.State;
            viewModel.TaskDate  = task.TaskDate;
            viewModel.TaskId    = task.TaskId;
            viewModel.TaskName  = task.TaskName;
            viewModel.TaskType  = task.TaskType;

            return(viewModel);
        }
        public IActionResult Create(TechnicalAssistanceViewModel data)
        {
            if (ModelState.IsValid)
            {
                Claim claim = HttpContext
                              .User
                              .Claims
                              .Where(c => c.Type == ClaimTypes.Sid)
                              .FirstOrDefault();

                User   attendedBy = context.Users.Find(Int32.Parse(claim.Value));
                Source source     = context.Source.Find(data.SourceId);

                TechnicalAssistance task = new TechnicalAssistance();

                task.Source        = source;
                task.TaskName      = data.TaskName;
                task.ProblemTypeId = data.ProblemTypeId;
                task.AttendedBy    = attendedBy;
                task.State         = data.State;
                task.TaskDate      = DateTime.Now;
                task.StartDate     = null;
                task.EndDate       = null;
                task.TaskType      = TaskType.AsistenciaTecnica;

                if (data.AssignedToUserId != null && data.AssignedToUserId > 0)
                {
                    task.AssignedTo = context.Users.Find(data.AssignedToUserId);
                    task.AssignedBy = attendedBy;
                }

                context.TechnicalAssistance.Add(task);
                context.SaveChanges();
                RedirectToAction("Index", "TechnicalAssistance");
            }


            ViewBag.Sources      = context.Source.AsEnumerable();
            ViewBag.ProblemTypes = context.ProblemTypes.AsEnumerable();
            ViewBag.Users        = context.Users.AsEnumerable();
            return(View(data));
        }