public IActionResult ViewAll(int idFormat, [FromServices] IOrganigramaModelFactory organigramModelFactory, [FromServices] IRepository <EmployeeFormat> formatRepository, [FromServices] INotificationModelFactory notificationModelFactory, [FromServices] IHttpContextAccessor _httpContextAccessor) { FormatApproverPendingModel model = new FormatApproverPendingModel(); var formats = notificationModelFactory.NotificaticonsItems; var format = formatRepository.GetElement(idFormat); if (format != null) { var employee = organigramModelFactory.GetEmployeeData(format.EmployeeId); if (employee != null) { model.FormatEmployee.Area = employee.Area; model.FormatEmployee.JobCenter = employee.JobCenter; model.FormatEmployee.Departamento = employee.Departamento; model.FormatEmployee.Name = $"{employee.GeneralInfo.FirstName} {employee.GeneralInfo.LastName} {employee.GeneralInfo.LastName2}"; model.FormatEmployee.PicturePath = employee.GeneralInfo.Picture; } var formatDetail = formats.Where(u => u.Id.Equals(idFormat)); if (formatDetail.Any()) { model.FormatDetail = formatDetail.FirstOrDefault(); } } return(View(model)); }
public IActionResult ViewDetail(int idFormat, [FromServices] IOrganigramaModelFactory organigramModelFactory, [FromServices] IRepository <EmployeeFormat> formatRepository, [FromServices] INotificationModelFactory notificationModelFactory, [FromServices] IRepository <FormatApprover> formatApprover, [FromServices] IHttpContextAccessor _httpContextAccessor) { FormatApproverPendingModel model = new FormatApproverPendingModel(); var formats = notificationModelFactory.NotificaticonsItems; var employees = organigramModelFactory.GetAllData(); var format = formatRepository.GetElement(idFormat); if (format != null) { var employee = organigramModelFactory.GetEmployeeData(format.EmployeeId); if (employee != null) { model.FormatEmployee.Area = employee.Area; model.FormatEmployee.JobCenter = employee.JobCenter; model.FormatEmployee.Departamento = employee.Departamento; model.FormatEmployee.JobTitle = employee.GeneralInfo.JobTitle; model.FormatEmployee.Name = $"{employee.GeneralInfo.FirstName} {employee.GeneralInfo.LastName} {employee.GeneralInfo.LastName2}"; model.FormatEmployee.PicturePath = employee.GeneralInfo.Picture; } var formatDetail = formats.Where(u => u.Id.Equals(idFormat)); if (formatDetail.Any()) { model.FormatDetail = formatDetail.FirstOrDefault(); var employeeSust = organigramModelFactory.GetEmployeeData(format.EmployeeSubstitute); model.FormatDetail.EmployeeSustitution = $"{employeeSust.GeneralInfo.FirstName} {employeeSust.GeneralInfo.LastName} {employeeSust.GeneralInfo.LastName2}"; List <FormatApprover> apprs = new List <FormatApprover>(); //Approbador Global formatApprover.SearhItemsFor(i => i.Area.Equals(string.Empty) && i.Centro.Equals(string.Empty) && i.Departamento.Equals(string.Empty)).ToList().ForEach(f => { if (string.IsNullOrEmpty(f.ApproverListEmployees)) { apprs.Add(f); } else { var listEmp = JsonConvert.DeserializeObject <List <string> >(f.ApproverListEmployees); if (listEmp != null && listEmp.Any()) { listEmp.ForEach(emp => { if (emp.Equals(format.EmployeeId)) { apprs.Add(f); } }); } } }); //Aprobador Area apprs.AddRange(formatApprover.SearhItemsFor(i => i.Area.Equals(model.FormatEmployee.Area)).Where(p => (apprs).All(p2 => p2.RowGuid != p.RowGuid)).ToList()); //Aprobador Centro apprs.AddRange(formatApprover.SearhItemsFor(i => i.Area.Equals(model.FormatEmployee.Area) && i.Centro.Equals(model.FormatEmployee.JobCenter)).Where(p => (apprs).All(p2 => p2.RowGuid != p.RowGuid)).ToList()); //Aprobador Depto apprs.AddRange(formatApprover.SearhItemsFor(i => i.Area.Equals(model.FormatEmployee.Area) && i.Centro.Equals(model.FormatEmployee.JobCenter) && i.Departamento.Equals(model.FormatEmployee.Departamento)).Where(p => (apprs).All(p2 => p2.RowGuid != p.RowGuid)).ToList()); if (apprs.Any()) { apprs.ForEach((a) => { var approName = employees.Employess.Where(d => d.RowId.ToString().ToLower().Equals(a.RowGuid.ToString().ToLower())).FirstOrDefault(); if (approName != null) { model.Approvers.Add(new ForrmatApproverWorkflow() { Id = a.Id, RowId = a.RowGuid, Name = approName.Name }); } }); } } else { model.FormatDetail = notificationModelFactory.AllNotificaticonsItems.Where(d => d.Id.Equals(format.Id)).FirstOrDefault(); var employeeSust = organigramModelFactory.GetEmployeeData(format.EmployeeSubstitute); model.FormatDetail.EmployeeSustitution = $"{employeeSust.GeneralInfo.FirstName} {employeeSust.GeneralInfo.LastName} {employeeSust.GeneralInfo.LastName2}"; if (!string.IsNullOrEmpty(format.ApprovalWorkFlow)) { List <FormatApprover> apprs = new List <FormatApprover>(); //Approbador Global formatApprover.SearhItemsFor(i => i.Area.Equals(string.Empty) && i.Centro.Equals(string.Empty) && i.Departamento.Equals(string.Empty)).ToList().ForEach(f => { if (string.IsNullOrEmpty(f.ApproverListEmployees)) { apprs.Add(f); } else { var listEmp = JsonConvert.DeserializeObject <List <string> >(f.ApproverListEmployees); if (listEmp != null && listEmp.Any()) { listEmp.ForEach(emp => { if (emp.Equals(format.EmployeeId)) { apprs.Add(f); } }); } } }); //Aprobador Area apprs.AddRange(formatApprover.SearhItemsFor(i => i.Area.Equals(model.FormatEmployee.Area)).Where(p => (apprs).All(p2 => p2.RowGuid != p.RowGuid)).ToList()); //Aprobador Centro apprs.AddRange(formatApprover.SearhItemsFor(i => i.Area.Equals(model.FormatEmployee.Area) && i.Centro.Equals(model.FormatEmployee.JobCenter)).Where(p => (apprs).All(p2 => p2.RowGuid != p.RowGuid)).ToList()); //Aprobador Depto apprs.AddRange(formatApprover.SearhItemsFor(i => i.Area.Equals(model.FormatEmployee.Area) && i.Centro.Equals(model.FormatEmployee.JobCenter) && i.Departamento.Equals(model.FormatEmployee.Departamento)).Where(p => (apprs).All(p2 => p2.RowGuid != p.RowGuid)).ToList()); var apps = JsonConvert.DeserializeObject <List <ForrmatApproverWorkflow> >(format.ApprovalWorkFlow); apprs.ForEach(h => { var t = apps.Where(k => k.RowId.Equals(h.RowGuid)); if (!t.Any()) { var approName = employees.Employess.Where(d => d.RowId.ToString().ToLower().Equals(h.RowGuid.ToString().ToLower())).FirstOrDefault(); if (approName != null) { model.Approvers.Add(new ForrmatApproverWorkflow() { Id = h.Id, RowId = h.RowGuid, Name = approName.Name }); } } }); model.Approvers.AddRange(apps); } } } return(View(model)); }