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 NotificationModelFactory(IRepository <EmployeeFormat> formatRepository,
                                        IRepository <FormatApprover> formatApproverRepository,
                                        IHttpContextAccessor httpContextAccessor,
                                        IOrganigramaModelFactory organigramaModelFactory,
                                        IRepository <PermissionType> permissionTypeRepository,
                                        SignInManager <IdentityUser> signInManager,
                                        UserManager <IdentityUser> userManager)
        {
            _notification = 0;
            this._formatApproverRepository = formatApproverRepository;
            this._formatRepository         = formatRepository;
            this._httpContextAccessor      = httpContextAccessor;
            this._organigramaModelFactory  = organigramaModelFactory;
            this._permissionTypeRepository = permissionTypeRepository;

            AllNotificaticonsItems           = new List <NotificacionModelItem>();
            NotificaticonsItems              = new List <NotificacionModelItem>();
            LastVacationsNotificationItems   = new List <NotificacionModelItem>();
            LastPermissionsNotificationItems = new List <NotificacionModelItem>();

            this._signInManager = signInManager;
            this._userManager   = userManager;

            CountPendigFormat();
        }
Beispiel #3
0
        public JsonResult GetNotifiers(int id,
                                       [FromServices] IRepository <EmployeeNotify> employeeNotify,
                                       [FromServices] IOrganigramaModelFactory organigramaModelFactory)
        {
            var organigrama = organigramaModelFactory.GetAllData().Employess;
            var row         = employeeNotify.GetElement(id);
            var rows        = employeeNotify.SearhItemsFor(u => u.Area.Equals(row.Area) && u.Centro.Equals(row.Centro) && u.Departamento.Equals(row.Departamento));
            EmployeeNotificationModel model = new EmployeeNotificationModel();

            if (rows.Any())
            {
                var emps = (from apv in rows
                            join org in organigrama on apv.RowGuid.ToString().ToLower() equals org.RowId.ToLower()
                            select new EmployeeNotificationItem()
                {
                    Id = apv.Id,
                    Area = apv.Area,
                    Centro = apv.Centro,
                    Puesto = org.JobTitle,
                    RowGuid = apv.RowGuid.ToString(),
                    Notifier = $"{org.Name}",
                    Email = org.UserName
                }).ToList();

                model.Notifications = emps;
            }


            return(Json(new { area = row.Area, centro = row.Centro, depto = row.Departamento, collection = model.Notifications }));
        }
Beispiel #4
0
        public JsonResult GetApprovers(int id,
                                       [FromServices] IRepository <FormatApprover> formatApproversRepository,
                                       [FromServices] IOrganigramaModelFactory organigramaModelFactory)
        {
            var organigrama           = organigramaModelFactory.GetAllData().Employess;
            var row                   = formatApproversRepository.GetElement(id);
            var rows                  = formatApproversRepository.SearhItemsFor(u => u.Area.Equals(row.Area) && u.Centro.Equals(row.Centro) && u.Departamento.Equals(row.Departamento));
            FormatApproverModel model = new FormatApproverModel();

            if (rows.Any())
            {
                var emps = (from apv in rows
                            join org in organigrama on apv.RowGuid.ToString().ToLower() equals org.RowId.ToLower()
                            select new FormatApproverItem()
                {
                    Id = apv.Id,
                    Area = apv.Area,
                    Centro = apv.Centro,
                    Puesto = org.JobTitle,
                    RowGuid = apv.RowGuid.ToString(),
                    Approver = $"{org.Name}",
                    Order = apv.Orden
                }).ToList();

                model.Approvers = emps;
            }


            return(Json(new { area = row.Area, centro = row.Centro, depto = row.Departamento, collection = model.Approvers }));
        }
Beispiel #5
0
        public JsonResult SaveNotifier(string area, string centro, string depto, string approver,
                                       [FromServices] IRepository <EmployeeNotify> employeeNotify,
                                       [FromServices] IOrganigramaModelFactory organigramaModelFactory)
        {
            int order      = 1;
            var aprovOrder = employeeNotify.SearhItemsFor(f => f.Area.Equals(area) && f.Centro.Equals(centro) && f.Departamento.Equals(depto));

            if (aprovOrder.Any())
            {
                order = aprovOrder.Count() + 1;
            }

            var emp = organigramaModelFactory.GetEmployeeData(approver);

            var empNotify = new EmployeeNotify()
            {
                Area         = area,
                Centro       = centro,
                Departamento = depto,
                Orden        = order,
                Puesto       = emp.GeneralInfo.JobTitle,
                RowGuid      = Guid.Parse(emp.HierarchyGuid)
            };

            employeeNotify.Create(empNotify);



            return(Json("ok"));
        }
 public EmployeeFormatModelFactory(IRepository <EmployeeFormat> formatRepository,
                                   IOrganigramaModelFactory organigrama, IRepository <PermissionType> permissionType)
 {
     this._formatRepository = formatRepository;
     this._organigrama      = organigrama;
     this._permissionType   = permissionType;
 }
Beispiel #7
0
        // GET: /<controller>/
        public IActionResult Index(string employee,
                                   [FromServices] IRepository <EmployeeHistory> empHistory,
                                   [FromServices] IOrganigramaModelFactory organigramaFactory)
        {
            var orgData = organigramaFactory.GetEmployeeData(employee);
            var history = empHistory.SearhItemsFor(e => e.EmployeeId.Equals(orgData.GeneralInfo.Id));

            EmployeeHistoryModel model = new EmployeeHistoryModel()
            {
                EmployeeId      = employee,
                Area            = orgData.Area,
                JobCenter       = orgData.JobCenter,
                FirstName       = orgData.GeneralInfo.FirstName,
                LastName        = orgData.GeneralInfo.LastName,
                EmployeeHistory = history.Select(y => new EmployeeHistoryItem()
                {
                    DateChange   = y.DateChange.ToShortDateString(),
                    Descripcion  = y.Descripcion,
                    EmployeeId   = y.EmployeeId,
                    JobActual    = y.JobActual,
                    JobLast      = y.JobLast,
                    RegisterDate = y.RegisterDate.ToShortDateString(),
                    UserId       = y.UserId,
                    Id           = y.Id
                }).ToList()
            };


            return(View(model));
        }
Beispiel #8
0
 public DashboardHistoryController(IDashboardModelFactory dashboardModelFactory,
                                   IOrganigramaModelFactory organigramaModelFactory,
                                   IEmployeeFormatModelFactory employeeFormatModelFactory)
 {
     this._dashboardModelFactory      = dashboardModelFactory;
     this._organigramaModelFactory    = organigramaModelFactory;
     this._employeeFormatModelFactory = employeeFormatModelFactory;
 }
        public JsonResult GetFormatData(int id,
                                        [FromServices] IRepository <EmployeeFormat> formatRepository,
                                        [FromServices] IOrganigramaModelFactory _organigramaModelFactory,
                                        [FromServices] IRepository <PermissionType> _permissionTypeRepository)
        {
            StringBuilder sb = new StringBuilder();

            var    result = formatRepository.GetElement(id);
            string type   = _permissionTypeRepository.GetElement(result.PermissionType).Description;

            string name = "";

            if (result.EmployeeSubstitute != "0")
            {
                var employee = _organigramaModelFactory.GetEmployeeData(result.EmployeeSubstitute.TrimStart(new Char[] { '0' }));
                name = $"{employee.GeneralInfo.FirstName} {employee.GeneralInfo.LastName}";
            }

            if (type.ToLower().Contains("permiso") || type.ToLower().Contains("pase"))
            {
                sb.Append($"Hora inicial : {result.StartTime}{Environment.NewLine}");
                sb.Append($"Hora final : {result.EndTime}{Environment.NewLine}");
                if (result.WithPay)
                {
                    sb.Append($"Con goze de sueldo : Si{Environment.NewLine}");
                }
                else
                {
                    sb.Append($"Con goze de sueldo : No{Environment.NewLine}");
                }
            }
            else if (type.ToLower().Contains("vacacion"))
            {
                if (!string.IsNullOrEmpty(result.NomipaqVacations))
                {
                    EmployeeVacation empvac = JsonConvert.DeserializeObject <EmployeeVacation>(result.NomipaqVacations);
                    sb.Append($"Total de días : {empvac.TotalDias}{Environment.NewLine}");
                    sb.Append($"Total de días gozados : {empvac.DiasTomados}{Environment.NewLine}");
                    sb.Append($"Total de días disponibles : {empvac.DiasDisponibles}{Environment.NewLine}");
                }
            }

            return(Json(new
            {
                type = type,
                comment = result.Comments,
                dateini = result.StartDate.ToShortDateString(),
                datefin = result.EndDate.ToShortDateString(),
                sustitute = name,
                config = sb.ToString()
            }));
        }
Beispiel #10
0
 public NotificationHub(IRepository <EmployeeFormat> formatRepository,
                        IHttpContextAccessor httpContextAccessor,
                        SignInManager <IdentityUser> signInManager,
                        IRepository <FormatApprover> formatApproverRepository,
                        IOrganigramaModelFactory organigramaModelFactory,
                        INotificationModelFactory notificationModelFactory)
 {
     this._formatRepository         = formatRepository;
     this._httpContextAccessor      = httpContextAccessor;
     this._signInManager            = signInManager;
     this._formatApproverRepository = formatApproverRepository;
     this._organigramaModelFactory  = organigramaModelFactory;
     this._notificationModelFactory = notificationModelFactory;
 }
        public IActionResult MainRequestFormat(string pinEmployee,
                                               [FromServices] IRepository <PermissionType> _permissionTypeRepository,
                                               [FromServices] IOrganigramaModelFactory organigramaModelFactory,
                                               [FromServices] IRepository <EmployeeFormat> formatRepository,
                                               [FromServices] INomipaqEmployeeVacationModelFactory nomipaqEmployeeVacations)
        {
            var    data          = System.Convert.FromBase64String(pinEmployee);
            string base64Decoded = System.Text.ASCIIEncoding.ASCII.GetString(data);
            var    getEmployeeId = base64Decoded.Split('|');

            ViewBag.permissionType = _permissionTypeRepository.GetAll().Select(k => new SelectListItem()
            {
                Text = k.Description, Value = k.Id.ToString()
            });

            var employees = organigramaModelFactory.GetAllData().Employess;

            var info = organigramaModelFactory.GetEmployeeData(getEmployeeId[1].TrimStart(new Char[] { '0' }));

            FormatRequestModel model = new FormatRequestModel()
            {
                Employee          = $"{info.GeneralInfo.Id}",
                FulName           = $"{info.GeneralInfo.Id}-{info.GeneralInfo.FirstName} {info.GeneralInfo.LastName}",
                Picture           = info.GeneralInfo.Picture,
                JobTitle          = $"Puesto: {info.GeneralInfo.JobTitle}",
                Area              = $"Area: {info.Area}",
                JobCenter         = $"Centro de trabajo: {info.JobCenter}",
                EmployeeVacations = nomipaqEmployeeVacations.GetEmployeeVacations(getEmployeeId[1])
            };

            if (formatRepository.SearhItemsFor(y => y.EmployeeId.Equals(getEmployeeId[1].TrimStart(new Char[] { '0' }))).Any())
            {
                model.EmployeeFormats.AddRange(formatRepository.SearhItemsFor(y => y.EmployeeId.Equals(getEmployeeId[1].TrimStart(new Char[] { '0' }))).Select(r => new EmployeeFormatItem()
                {
                    Id                 = r.Id,
                    EmployeeId         = r.EmployeeId,
                    ApprovalDate       = r.ApprovalDate.HasValue ? r.ApprovalDate.Value.ToShortDateString() : "",
                    Comments           = r.Comments,
                    CreateDate         = r.CreateDate.ToShortDateString(),
                    EndDate            = r.EndDate.ToShortDateString(),
                    PermissionType     = _permissionTypeRepository.GetElement(r.PermissionType).Description,
                    StartDate          = $"({r.StartDate.ToShortDateString()})-({r.EndDate.ToShortDateString()})",
                    EmployeeSubstitute = employees.Where(k => k.Id.Equals(r.EmployeeSubstitute.TrimStart('0'))).FirstOrDefault().Name
                }));

                //var permissions = formatRepository.SearhItemsFor(y => y.EmployeeId.Equals("17") && )
            }

            return(View(model));
        }
Beispiel #12
0
        public JsonResult SetNewJobReactive(string jobGuid, string employeeId,
                                            [FromServices] IRepository <EmployeeOrganigrama> isosaemployeesOrganigramaRepository,
                                            [FromServices] IRepository <EmployeeAditionalInfo> employeAdditionalInfoRepository,
                                            [FromServices] IRepository <EmployeeHistory> employeeHistoryRepo,
                                            [FromServices] IHttpContextAccessor httpContextAccessor,
                                            [FromServices] IOrganigramaModelFactory organigramaModelFactory)
        {
            isosaemployeesOrganigramaRepository.CreateTableBackup("Horarios");
            var destiny  = isosaemployeesOrganigramaRepository.SearhItemsFor(j => j.RowGuid.ToString().Equals(jobGuid));
            var employee = employeAdditionalInfoRepository.SearhItemsFor(f => f.EMP_EmployeeID.Equals(int.Parse(employeeId).ToString("00000")));

            var    modellogin = httpContextAccessor.HttpContext.Session.GetString("loginmodel");
            var    loginInfo  = !string.IsNullOrEmpty(modellogin) ? JsonConvert.DeserializeObject <LoginModel.InputModel>(modellogin) : null;
            string userName   = loginInfo != null ? loginInfo.Email : null;

            var orgEmp = organigramaModelFactory.GetEmployeeData(employeeId);

            employeeHistoryRepo.Create(new EmployeeHistory()
            {
                EmployeeId    = employee.FirstOrDefault().EMP_EmployeeID,
                RegisterDate  = DateTime.Now,
                Descripcion   = "El empleado fue asignado a nuevo puesto",
                JobActual     = destiny.FirstOrDefault().Puesto,
                JobLast       = orgEmp.GeneralInfo.JobTitle,
                RowGuidActual = destiny.FirstOrDefault().RowGuid,
                RowGuidLast   = employee.FirstOrDefault().HrowGuid.Value,
                DateChange    = DateTime.Now,
                UserId        = userName
            });

            bool success = true;

            try
            {
                if (employee.Any())
                {
                    var emp = employee.First();
                    emp.HrowGuid = Guid.Parse(jobGuid);
                    employeAdditionalInfoRepository.Update(emp);
                }
            }
            catch
            {
                success = false;
            }


            return(Json(new { success = success, guidresponse = jobGuid }));
        }
Beispiel #13
0
        public IActionResult MainRequestFormat(string idEmployee,
                                               [FromServices] IRepository <PermissionType> _permissionTypeRepository,
                                               [FromServices] IOrganigramaModelFactory organigramaModelFactory,
                                               [FromServices] IRepository <EmployeeFormat> formatRepository,
                                               [FromServices] INomipaqEmployeeVacationModelFactory nomipaqEmployeeVacations)
        {
            ViewBag.permissionType = _permissionTypeRepository.GetAll().Select(k => new SelectListItem()
            {
                Text = k.Description, Value = k.Id.ToString()
            });

            var employees = organigramaModelFactory.GetAllData().Employess;

            var info = organigramaModelFactory.GetEmployeeData(idEmployee);

            FormatRequestModel model = new FormatRequestModel()
            {
                Employee          = $"{info.GeneralInfo.Id.TrimStart(new Char[] { '0' })}",
                FulName           = $"{info.GeneralInfo.Id}-{info.GeneralInfo.FirstName} {info.GeneralInfo.LastName}",
                Picture           = info.GeneralInfo.Picture,
                JobTitle          = $"Puesto: {info.GeneralInfo.JobTitle}",
                Area              = $"Area: {info.Area}",
                JobCenter         = $"Centro de trabajo: {info.JobCenter}",
                EmployeeVacations = nomipaqEmployeeVacations.GetEmployeeVacations(int.Parse(idEmployee).ToString("00000"))
            };

            var formats = formatRepository.SearhItemsFor(y => y.EmployeeId.Equals(idEmployee));

            if (formats.Any())
            {
                model.EmployeeFormats.AddRange(formatRepository.SearhItemsFor(y => y.EmployeeId.Equals(idEmployee)).Select(r => new EmployeeFormatItem()
                {
                    Id                 = r.Id,
                    EmployeeId         = r.EmployeeId,
                    ApprovalDate       = r.ApprovalDate.HasValue ? r.ApprovalDate.Value.ToShortDateString() : "",
                    Comments           = r.Comments,
                    CreateDate         = r.CreateDate.ToShortDateString(),
                    EndDate            = r.EndDate.ToShortDateString(),
                    PermissionType     = _permissionTypeRepository.GetElement(r.PermissionType).Description,
                    StartDate          = $"({r.StartDate.ToShortDateString()})-({r.EndDate.ToShortDateString()})",
                    EmployeeSubstitute = employees.Where(k => k.Id.Equals(r.EmployeeSubstitute.TrimStart('0'))).FirstOrDefault().Name
                }));
            }

            model.TotalPermissionsApproved = model.EmployeeFormats.Where(h => !string.IsNullOrEmpty(h.ApprovalDate)).Count();

            return(View(model));
        }
Beispiel #14
0
        public JsonResult SaveApprover(string area, string centro, string depto, string approver,
                                       [FromServices] IRepository <FormatApprover> formatApproversRepository,
                                       [FromServices] IOrganigramaModelFactory organigramaModelFactory)
        {
            int order = 1;

            if (area.ToLower().Contains("seleccione"))
            {
                area = string.Empty;
            }

            if (centro.ToLower().Contains("seleccione"))
            {
                centro = string.Empty;
            }

            if (depto.ToLower().Contains("seleccione"))
            {
                depto = string.Empty;
            }

            var aprovOrder = formatApproversRepository.SearhItemsFor(f => f.Area.Equals(area) && f.Centro.Equals(centro) && f.Departamento.Equals(depto));

            if (aprovOrder.Any())
            {
                order = aprovOrder.Count() + 1;
            }

            var emp = organigramaModelFactory.GetEmployeeData(approver);

            var formatapprover = new FormatApprover()
            {
                Area         = area,
                Centro       = centro,
                Departamento = depto,
                Orden        = order,
                Puesto       = emp.GeneralInfo.JobTitle,
                RowGuid      = Guid.Parse(emp.HierarchyGuid)
            };

            formatApproversRepository.Create(formatapprover);



            return(Json("ok"));
        }
Beispiel #15
0
        public JsonResult GetEmployeeNotifier(string employeeId,
                                              [FromServices] IRepository <EmployeeNotify> formatApproversRepository,
                                              [FromServices] IOrganigramaModelFactory organigramaModelFactory)
        {
            string name = string.Empty;
            int    row  = 0;

            if (!string.IsNullOrEmpty(employeeId))
            {
                var employeeInfo = organigramaModelFactory.GetEmployeeData(employeeId);
                if (employeeInfo != null && employeeInfo.HierarchyGuid != null)
                {
                    var empApprover = formatApproversRepository.SearhItemsFor(r => r.RowGuid.ToString().ToLower().Equals(employeeInfo.HierarchyGuid.ToLower()));
                    if (empApprover != null && empApprover.Any())
                    {
                        name = "El empleado ya está asignado para notificaciones";
                    }
                    else
                    {
                        if (!string.IsNullOrEmpty(employeeInfo.GeneralInfo.Email))
                        {
                            name = $"{employeeInfo.GeneralInfo.FirstName} {employeeInfo.GeneralInfo.LastName} - {employeeInfo.GeneralInfo.Email}";
                            row  = 1;
                        }
                        else
                        {
                            name = "El empleado seleccionado no tiene cuenta de correo eléctronico";
                            row  = 0;
                        }
                    }
                }
                else
                {
                    name = "No se encontrarón resultados";
                }
            }
            else
            {
                name = "No se encontrarón resultados";
            }

            return(Json(new { id = employeeId, value = name, rows = row }));
        }
Beispiel #16
0
        public IActionResult ApproverIndex(
            [FromServices] IRepository <FormatApprover> formatApproversRepository,
            [FromServices] IOrganigramaModelFactory organigramaModelFactory)
        {
            FormatApproverModel model = new FormatApproverModel();
            var approvers             = formatApproversRepository.GetAll();
            var organigrama           = organigramaModelFactory.GetAllData().Employess;

            var emps = (from apv in approvers
                        join org in organigrama on apv.RowGuid.ToString().ToLower() equals org.RowId.ToLower()
                        select new FormatApproverItem()
            {
                Id = apv.Id,
                Area = apv.Area,
                Centro = apv.Centro,
                Puesto = org.JobTitle,
                RowGuid = apv.RowGuid.ToString(),
                Approver = $"{org.Name}",
                Order = apv.Orden
            }).ToList();

            model.Approvers = emps;

            List <SelectListItem> areas = new List <SelectListItem>()
            {
                new SelectListItem()
                {
                    Text  = "Seleccione una opción",
                    Value = "0"
                }
            };

            areas.AddRange(organigramaModelFactory.GetAreas().Select(o => new SelectListItem()
            {
                Text  = o.Descripcion,
                Value = o.Id.ToString()
            }).ToList());

            ViewBag.Areas = areas;

            return(View(model));
        }
Beispiel #17
0
        public JsonResult GetEmployeeForApprover(string employeeId,
                                                 [FromServices] IRepository <FormatApprover> formatApproversRepository,
                                                 [FromServices] IOrganigramaModelFactory organigramaModelFactory)
        {
            string name = string.Empty;
            int    row  = 0;

            if (!string.IsNullOrEmpty(employeeId))
            {
                var employeeInfo = organigramaModelFactory.GetEmployeeData(employeeId);
                name = $"{employeeInfo.GeneralInfo.FirstName} {employeeInfo.GeneralInfo.LastName} {employeeInfo.GeneralInfo.LastName2}";
                row  = 1;
            }
            else
            {
                name = "No se encontrarón resultados";
            }

            return(Json(new { id = employeeId, value = name, rows = row }));
        }
Beispiel #18
0
        public JsonResult SearchBy(string inputtext, string typesearch, [FromServices] IOrganigramaModelFactory _organigramaModelFactory)
        {
            string value = string.Empty;
            string id    = string.Empty;
            int    row   = 0;

            var employee = _organigramaModelFactory.GetEmployeeData(inputtext.TrimStart(new Char[] { '0' }));

            if (employee.Area != null)
            {
                if (employee.RowId != null)
                {
                    id    = $"{typesearch}|{employee.GeneralInfo.Id}";
                    value = $"{inputtext}-{ employee.GeneralInfo.FirstName} {employee.GeneralInfo.LastName}";
                    row   = 1;
                }
            }

            return(Json(new { id = id, value = value, rows = row }));
        }
Beispiel #19
0
        public IActionResult NotifyIndex([FromServices] IRepository <EmployeeNotify> employeeNotifyRepository,
                                         [FromServices] IOrganigramaModelFactory organigramaModelFactory)
        {
            EmployeeNotificationModel model = new EmployeeNotificationModel();
            var notifiers   = employeeNotifyRepository.GetAll();
            var organigrama = organigramaModelFactory.GetAllData().Employess;

            var emps = (from apv in notifiers
                        join org in organigrama on apv.RowGuid.ToString().ToLower() equals org.RowId.ToLower()
                        select new EmployeeNotificationItem()
            {
                Id = apv.Id,
                Area = apv.Area,
                Centro = apv.Centro,
                Puesto = org.JobTitle,
                RowGuid = apv.RowGuid.ToString(),
                Notifier = $"{org.Name}",
                Email = org.UserName
            }).ToList();

            model.Notifications = emps;

            List <SelectListItem> areas = new List <SelectListItem>()
            {
                new SelectListItem()
                {
                    Text  = "Seleccione una opción",
                    Value = "0"
                }
            };

            areas.AddRange(organigramaModelFactory.GetAreas().Select(o => new SelectListItem()
            {
                Text  = o.Descripcion,
                Value = o.Id.ToString()
            }).ToList());

            ViewBag.Areas = areas;

            return(View(model));
        }
 public DashboardModelFactory(IRepository <DashboardData> dashboardRepository,
                              IRepository <EmployeeFormat> employeeFormatRepository,
                              IRepository <EmployeeAditionalInfo> employeeAdditionalInfo,
                              IRepository <NonWorkingDay> nonworkingDays,
                              IRepository <NonWorkingDayException> nonworkingDaysExeption,
                              IRepository <EmployeeScheduleAssigned> employeeScheduleAssigned,
                              IRepository <Schedule> scheduleRepository,
                              IRepository <PersonalDboardData> personalDashboardRepository,
                              IRepository <EmployeeScheduleDate> employeeScheduleDate,
                              IOrganigramaModelFactory organigramaModelFactory)
 {
     this._dashboardRepository         = dashboardRepository;
     this._employeeFormatRepository    = employeeFormatRepository;
     this._employeeAdditionalInfo      = employeeAdditionalInfo;
     this._nonworkingDays              = nonworkingDays;
     this._nonworkingDaysExeption      = nonworkingDaysExeption;
     this._employeeScheduleAssigned    = employeeScheduleAssigned;
     this._scheduleRepository          = scheduleRepository;
     this._personalDashboardRepository = personalDashboardRepository;
     this._employeeScheduleDate        = employeeScheduleDate;
     this._organigramaModelFactory     = organigramaModelFactory;
 }
Beispiel #21
0
        public JsonResult GetEmployeeApproverPP(string employeeId,
                                                [FromServices] IRepository <FormatApprover> formatApproversRepository,
                                                [FromServices] IOrganigramaModelFactory organigramaModelFactory)
        {
            string name = string.Empty;
            int    row  = 0;

            if (!string.IsNullOrEmpty(employeeId))
            {
                var employeeInfo = organigramaModelFactory.GetEmployeeData(employeeId);
                if (employeeInfo != null && employeeInfo.HierarchyGuid != null)
                {
                    List <FormatApprover> empApprover = new List <FormatApprover>();

                    empApprover = formatApproversRepository.SearhItemsFor(r => r.RowGuid.ToString().ToLower().Equals(employeeInfo.HierarchyGuid.ToLower())).ToList();

                    if (empApprover != null && !empApprover.Any())
                    {
                        name = $"{employeeInfo.GeneralInfo.FirstName} {employeeInfo.GeneralInfo.LastName} {employeeInfo.GeneralInfo.LastName2}";
                        row  = 1;
                    }
                    else
                    {
                        name = "El empleado ya está asignado para aprobación";
                    }
                }
                else
                {
                    name = "No se encontrarón resultados";
                }
            }
            else
            {
                name = "No se encontrarón resultados";
            }

            return(Json(new { id = employeeId, value = name, rows = row }));
        }
Beispiel #22
0
        public IActionResult EmployeeProfile(string idEmployee,
                                             [FromServices] IRepository <EmployeeProfile> employeeProfileRepository,
                                             [FromServices] IOrganigramaModelFactory organigramaModelFactory)
        {
            EmployeeProfileModel model = new EmployeeProfileModel();
            string employeeFormat      = int.Parse(idEmployee).ToString("00000");
            var    row = employeeProfileRepository.SearhItemsFor(l => l.EmployeeId.TrimStart('0').Equals(employeeFormat.TrimStart('0')));

            if (row.Any())
            {
                var data = row.FirstOrDefault();
                model = JsonConvert.DeserializeObject <EmployeeProfileModel>(data.ProfileSectionValues);
                var info = organigramaModelFactory.GetEmployeeData(idEmployee);
                model.Area         = info.Area;
                model.JobCenter    = info.JobCenter;
                model.Puesto       = info.GeneralInfo.JobTitle;
                model.EmployeeId   = info.GeneralInfo.Id;
                model.Categoria    = info.GeneralInfo.JobCenter;
                model.FirstName    = info.GeneralInfo.FirstName;
                model.LastName     = info.GeneralInfo.LastName;
                model.DocumentPath = data.DocumentPath;
            }
            else
            {
                var info = organigramaModelFactory.GetEmployeeData(idEmployee);
                model.Area       = info.Area;
                model.JobCenter  = info.JobCenter;
                model.Puesto     = info.GeneralInfo.JobTitle;
                model.EmployeeId = info.GeneralInfo.Id;
                model.Categoria  = info.GeneralInfo.JobCenter;
                model.FirstName  = info.GeneralInfo.FirstName;
                model.LastName   = info.GeneralInfo.LastName;
                model.Edad       = (DateTime.Now.Year - DateTime.Parse(info.GeneralInfo.FechaNacimiento).Year).ToString();
                model.Sexo       = info.GeneralInfo.Sexo;
            }

            return(View(model));
        }
Beispiel #23
0
        public JsonResult SaveApproverPPA(string approver, string[] employees,
                                          [FromServices] IRepository <FormatApprover> formatApproversRepository,
                                          [FromServices] IOrganigramaModelFactory organigramaModelFactory)
        {
            var emp = organigramaModelFactory.GetEmployeeData(approver);

            string values = JsonConvert.SerializeObject(employees.ToList());

            var formatapprover = new FormatApprover()
            {
                Area                  = string.Empty,
                Centro                = string.Empty,
                Departamento          = string.Empty,
                Orden                 = 1,
                Puesto                = emp.GeneralInfo.JobTitle,
                RowGuid               = Guid.Parse(emp.HierarchyGuid),
                ApproverListEmployees = values
            };

            formatApproversRepository.Create(formatapprover);

            return(Json("ok"));
        }
Beispiel #24
0
        public JsonResult GetAreas([FromServices] IOrganigramaModelFactory organigramaModelFactory)
        {
            var response = organigramaModelFactory.GetAreas();

            return(Json(new { collection = response }));
        }
        public FileResult PrintCurrentFormat(int idFormat,
                                             [FromServices] IEmployeeFormatModelFactory employeeFormatModelFactory,
                                             [FromServices] SARH.Core.Configuration.IConfigurationManager configManager,
                                             [FromServices] IOrganigramaModelFactory organigramaModelFactory)
        {
            IConfigPdf config = new ConfigPdf()
            {
                FontPathPdf     = configManager.FontPathPdf,
                ImgPathPdf      = configManager.ImgPathPdf,
                FontPathBarCode = configManager.FontPathBarCode
            };
            PdfManager manager = new PdfManager(config);

            var    format  = employeeFormatModelFactory.GetformatInfo(idFormat);
            var    formats = employeeFormatModelFactory.GetAllFormatsByEmployee(format.EmployeeId);
            string path    = System.IO.Path.GetTempPath();
            string empId   = int.Parse(format.EmployeeId).ToString("00000");

            var empInfo = organigramaModelFactory.GetEmployeeData(format.EmployeeId);

            var sustitute = organigramaModelFactory.GetEmployeeData(format.Suplente);

            string fileName = $"{path}FormatNumber{idFormat}.pdf";

            if (System.IO.File.Exists(fileName))
            {
                System.IO.File.Delete(fileName);
            }

            try
            {
                manager.CreatePermissionFormat(new Core.PdfCreator.FormatData.DocumentInfoPdfData()
                {
                    TitleDocumento = "SOLICITUD DE PERMISOS",
                    FormatId       = $"Fecha de Solicitud: {format.FechaSolicitud}",
                    Area           = empInfo.Area,
                    JobTitle       = empInfo.GeneralInfo.JobTitle,
                    EmployeeName   = $"{empInfo.GeneralInfo.FirstName} {empInfo.GeneralInfo.LastName} {empInfo.GeneralInfo.LastName2}",
                    EmployeInfo    = new Core.PdfCreator.FormatData.EmployeeInfoData()
                    {
                        EmployeeId      = empInfo.GeneralInfo.Id,
                        EmployeeName    = $"{empInfo.GeneralInfo.FirstName} {empInfo.GeneralInfo.LastName} {empInfo.GeneralInfo.LastName2}",
                        Rfc             = empInfo.GeneralInfo.RFC,
                        Curp            = empInfo.GeneralInfo.CURP,
                        NSS             = empInfo.GeneralInfo.NSS,
                        BrithDate       = empInfo.GeneralInfo.FechaNacimiento,
                        HireDate        = empInfo.GeneralInfo.HireDate,
                        FireDate        = "N/A",
                        PhotoPath       = empInfo.GeneralInfo.Picture,
                        PersonalPhone   = empInfo.PersonalInfo.Phone,
                        CellNumber      = empInfo.PersonalInfo.CellPhone,
                        PersonalEmail   = empInfo.PersonalInfo.Email,
                        Address         = empInfo.PersonalInfo.Address,
                        City            = empInfo.PersonalInfo.City,
                        State           = empInfo.PersonalInfo.State,
                        Cp              = empInfo.PersonalInfo.Zip,
                        ContactName     = empInfo.EmergencyData.Name,
                        ContactRelation = empInfo.EmergencyData.Relacion,
                        ContactPhone    = empInfo.EmergencyData.Phone,
                        JobTitle        = empInfo.GeneralInfo.JobTitle
                    },
                    EmployeeSustitute = new Core.PdfCreator.FormatData.FormatEmployeeSustitute()
                    {
                        Name     = $"{sustitute.GeneralInfo.FirstName} {sustitute.GeneralInfo.LastName} {sustitute.GeneralInfo.LastName2}",
                        JobTitle = sustitute.GeneralInfo.JobTitle
                    },
                    FormatPermission = new Core.PdfCreator.FormatData.FormatPermissionData()
                    {
                        Cause            = format.Comments,
                        DateStart        = format.StartDate,
                        DateEnd          = format.EndDate,
                        TimeStart        = format.StartTime,
                        TimeEnd          = format.EndTime,
                        Comments         = format.AdditionalInfo,
                        TotalPermissions = formats.Count()
                    }
                }, fileName);
            }
            catch (Exception ex)
            {
                byte[] FileBytesError = System.Text.Encoding.UTF8.GetBytes(ex.Message);
                return(File(FileBytesError, "text/plain"));
            }


            byte[] FileBytes = System.IO.File.ReadAllBytes(fileName);
            return(File(FileBytes, "application/pdf"));
        }
Beispiel #26
0
        public JsonResult GetEmployeeApprover(string employeeId, string area, string centro, string depto,
                                              [FromServices] IRepository <FormatApprover> formatApproversRepository,
                                              [FromServices] IOrganigramaModelFactory organigramaModelFactory)
        {
            string name = string.Empty;
            int    row  = 0;

            if (area.ToLower().Contains("seleccione"))
            {
                area = string.Empty;
            }


            if (centro.ToLower().Contains("seleccione"))
            {
                centro = string.Empty;
            }

            if (depto.ToLower().Contains("seleccione"))
            {
                depto = string.Empty;
            }

            if (!string.IsNullOrEmpty(employeeId))
            {
                var employeeInfo = organigramaModelFactory.GetEmployeeData(employeeId);
                if (employeeInfo != null && employeeInfo.HierarchyGuid != null)
                {
                    List <FormatApprover> empApprover = new List <FormatApprover>();

                    empApprover = formatApproversRepository.SearhItemsFor(r => r.RowGuid.ToString().ToLower().Equals(employeeInfo.HierarchyGuid.ToLower()) &&
                                                                          r.Area.Equals(area) && r.Centro.Equals(centro) &&
                                                                          r.Departamento.Equals(depto)).ToList();

                    if (empApprover != null && !empApprover.Any())
                    {
                        if (string.IsNullOrEmpty(area))
                        {
                            empApprover = formatApproversRepository.SearhItemsFor(r => r.RowGuid.ToString().ToLower().Equals(employeeInfo.HierarchyGuid.ToLower())).ToList();
                        }

                        if (string.IsNullOrEmpty(centro) && !string.IsNullOrEmpty(area))
                        {
                            empApprover = formatApproversRepository.SearhItemsFor(r => r.RowGuid.ToString().ToLower().Equals(employeeInfo.HierarchyGuid.ToLower()) &&
                                                                                  r.Area.ToLower().Equals(area.ToLower())).ToList();
                        }

                        if (string.IsNullOrEmpty(depto) && !string.IsNullOrEmpty(centro))
                        {
                            empApprover = formatApproversRepository.SearhItemsFor(r => r.RowGuid.ToString().ToLower().Equals(employeeInfo.HierarchyGuid.ToLower()) &&
                                                                                  r.Area.ToLower().Equals(area.ToLower()) && r.Centro.ToLower().Equals(centro.ToLower())).ToList();
                        }

                        if (!string.IsNullOrEmpty(centro) && !string.IsNullOrEmpty(depto) && !string.IsNullOrEmpty(area))
                        {
                            empApprover = formatApproversRepository.SearhItemsFor(r => r.RowGuid.ToString().ToLower().Equals(employeeInfo.HierarchyGuid.ToLower()) &&
                                                                                  r.Area.ToLower().Equals(area.ToLower()) && r.Centro.ToLower().Equals(centro.ToLower()) && r.Departamento.ToLower().Equals(depto.ToLower())).ToList();
                        }

                        if (empApprover != null && empApprover.Any())
                        {
                            name = "El empleado ya está asignado para aprobación";
                        }
                        else
                        {
                            name = $"{employeeInfo.GeneralInfo.FirstName} {employeeInfo.GeneralInfo.LastName} {employeeInfo.GeneralInfo.LastName2}";
                            row  = 1;
                        }
                    }
                    else
                    {
                        name = "El empleado ya está asignado para aprobación";
                    }
                }
                else
                {
                    name = "No se encontrarón resultados";
                }
            }
            else
            {
                name = "No se encontrarón resultados";
            }

            return(Json(new { id = employeeId, value = name, rows = row }));
        }
        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));
        }
        public JsonResult Declined(int idFormat, string comments,
                                   [FromServices] IOrganigramaModelFactory organigramModelFactory,
                                   [FromServices] IRepository <EmployeeFormat> formatRepository,
                                   [FromServices] INotificationModelFactory notificationModelFactory,
                                   [FromServices] IRepository <FormatApprover> formatApprover,
                                   [FromServices] IHttpContextAccessor _httpContextAccessor)
        {
            bool alreadyApprove = false;
            var  employees      = organigramModelFactory.GetAllData();
            var  format         = formatRepository.GetElement(idFormat);
            List <ForrmatApproverWorkflow> approvers = new List <ForrmatApproverWorkflow>();
            var    modellogin = _httpContextAccessor.HttpContext.Session.GetString("loginmodel");
            var    loginInfo  = !string.IsNullOrEmpty(modellogin) ? JsonConvert.DeserializeObject <LoginModel.InputModel>(modellogin) : null;
            string userName   = loginInfo != null ? loginInfo.Email : null;
            var    approver   = employees.Employess.Where(t => t.UserName.Equals(userName));

            var emp = employees.Employess.Where(j => j.Id.Equals(format.EmployeeId)).FirstOrDefault();

            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(e =>
                        {
                            if (e.Equals(format.EmployeeId))
                            {
                                apprs.Add(f);
                            }
                        });
                    }
                }
            });


            //Aprobador Area
            apprs.AddRange(formatApprover.SearhItemsFor(i => i.Area.Equals(emp.Area)).Where(p => (apprs).All(p2 => p2.RowGuid != p.RowGuid)).ToList());


            //Aprobador Centro
            apprs.AddRange(formatApprover.SearhItemsFor(i => i.Area.Equals(emp.Area) &&
                                                        i.Centro.Equals(emp.JobCenter)).Where(p => (apprs).All(p2 => p2.RowGuid != p.RowGuid)).ToList());


            //Aprobador Depto
            apprs.AddRange(formatApprover.SearhItemsFor(i => i.Area.Equals(emp.Area) &&
                                                        i.Centro.Equals(emp.JobCenter) && i.Departamento.Equals(emp.Category)).Where(p => (apprs).All(p2 => p2.RowGuid != p.RowGuid)).ToList());

            int totApp = apprs.Count;

            if (format != null)
            {
                if (string.IsNullOrEmpty(format.ApprovalWorkFlow))
                {
                    if (approver.Any())
                    {
                        ForrmatApproverWorkflow workflow = new ForrmatApproverWorkflow()
                        {
                            Id          = idFormat,
                            Approved    = "No",
                            ApproveDate = DateTime.Now.ToShortDateString(),
                            Comments    = comments,
                            Name        = approver.FirstOrDefault().Name,
                            RowId       = Guid.Parse(approver.FirstOrDefault().RowId)
                        };
                        approvers.Add(workflow);
                    }
                }
                else
                {
                    approvers = JsonConvert.DeserializeObject <List <ForrmatApproverWorkflow> >(format.ApprovalWorkFlow);
                    var app = approvers.Where(g => g.RowId.ToString().ToLower().Equals(approver.FirstOrDefault().RowId.ToLower()));
                    if (!app.Any())
                    {
                        ForrmatApproverWorkflow workflow = new ForrmatApproverWorkflow()
                        {
                            Id          = idFormat,
                            Approved    = "No",
                            ApproveDate = DateTime.Now.ToShortDateString(),
                            Comments    = comments,
                            Name        = approver.FirstOrDefault().Name,
                            RowId       = Guid.Parse(approver.FirstOrDefault().RowId)
                        };
                        approvers.Add(workflow);
                    }
                    else
                    {
                        alreadyApprove = true;
                    }
                }

                if (!alreadyApprove)
                {
                    format.Declined         = true;
                    format.ApprovalWorkFlow = JsonConvert.SerializeObject(approvers);
                    formatRepository.Update(format);
                }
            }

            return(Json(new { alreadyapprove = alreadyApprove }));
        }
Beispiel #29
0
        public JsonResult GetDeptos(string area, string centros, [FromServices] IOrganigramaModelFactory organigramaModelFactory)
        {
            var response = organigramaModelFactory.GetDeptos(area, centros);

            return(Json(new { collection = response }));
        }
        public FileResult PrintVacationFormat(int idFormat,
                                              [FromServices] IEmployeeFormatModelFactory employeeFormatModelFactory,
                                              [FromServices] SARH.Core.Configuration.IConfigurationManager configManager,
                                              [FromServices] IOrganigramaModelFactory organigramaModelFactory,
                                              [FromServices] INomipaqEmployeeVacationModelFactory nomipaqVacationModelFactory)
        {
            IConfigPdf config = new ConfigPdf()
            {
                FontPathPdf     = configManager.FontPathPdf,
                ImgPathPdf      = configManager.ImgPathPdf,
                FontPathBarCode = configManager.FontPathBarCode
            };
            PdfManager manager = new PdfManager(config);

            var    format    = employeeFormatModelFactory.GetformatInfo(idFormat);
            var    formats   = employeeFormatModelFactory.GetAllFormatsByEmployee(format.EmployeeId);
            string path      = System.IO.Path.GetTempPath();
            string empId     = int.Parse(format.EmployeeId).ToString("00000");
            var    vacations = nomipaqVacationModelFactory.GetEmployeeVacations(int.Parse(format.EmployeeId).ToString("00000"));

            Core.PdfCreator.FormatData.FormatVacationData vacationInfo = new Core.PdfCreator.FormatData.FormatVacationData();

            var empInfo = organigramaModelFactory.GetEmployeeData(format.EmployeeId);

            var sustitute = organigramaModelFactory.GetEmployeeData(format.Suplente);

            if (vacations != null)
            {
                var formatDays = (DateTime.Parse(format.EndDate) - DateTime.Parse(format.StartDate)).TotalDays + 1;
                vacationInfo = new Core.PdfCreator.FormatData.FormatVacationData()
                {
                    AñosCumplidos          = vacations.Antiguedad.ToString("00"),
                    DiasGozado             = vacations.DiasTomados.ToString(),
                    DiasPendinteAñoAnteior = vacations.TotalDias.ToString(),
                    DiasPorAño             = vacations.DiasPorAño.ToString(),
                    DiasPorGozar           = vacations.DiasDisponibles.ToString(),
                    FechaIngreso           = empInfo.GeneralInfo.HireDate,
                    PorGozar        = Math.Round((vacations.DiasDisponibles - formatDays), 0).ToString(),
                    DiasSolicitados = formatDays.ToString("00"),
                    FechaInicial    = format.StartDate,
                    FechaFinal      = format.EndDate
                };
            }

            string fileName = $"{path}FormatNumber{idFormat}.pdf";

            if (System.IO.File.Exists(fileName))
            {
                System.IO.File.Delete(fileName);
            }

            try
            {
                manager.CreateVacationFormat(new Core.PdfCreator.FormatData.DocumentInfoPdfData()
                {
                    TitleDocumento = "SOLICITUD DE VACACIONES",
                    FormatId       = $"Fecha de Solicitud: {format.FechaSolicitud}",
                    Area           = empInfo.Area,
                    JobTitle       = empInfo.GeneralInfo.JobTitle,
                    EmployeeName   = $"{empInfo.GeneralInfo.FirstName} {empInfo.GeneralInfo.LastName} {empInfo.GeneralInfo.LastName2}",
                    EmployeInfo    = new Core.PdfCreator.FormatData.EmployeeInfoData()
                    {
                        EmployeeId      = empInfo.GeneralInfo.Id,
                        EmployeeName    = $"{empInfo.GeneralInfo.FirstName} {empInfo.GeneralInfo.LastName} {empInfo.GeneralInfo.LastName2}",
                        Rfc             = empInfo.GeneralInfo.RFC,
                        Curp            = empInfo.GeneralInfo.CURP,
                        NSS             = empInfo.GeneralInfo.NSS,
                        BrithDate       = empInfo.GeneralInfo.FechaNacimiento,
                        HireDate        = empInfo.GeneralInfo.HireDate,
                        FireDate        = "N/A",
                        PhotoPath       = empInfo.GeneralInfo.Picture,
                        PersonalPhone   = empInfo.PersonalInfo.Phone,
                        CellNumber      = empInfo.PersonalInfo.CellPhone,
                        PersonalEmail   = empInfo.PersonalInfo.Email,
                        Address         = empInfo.PersonalInfo.Address,
                        City            = empInfo.PersonalInfo.City,
                        State           = empInfo.PersonalInfo.State,
                        Cp              = empInfo.PersonalInfo.Zip,
                        ContactName     = empInfo.EmergencyData.Name,
                        ContactRelation = empInfo.EmergencyData.Relacion,
                        ContactPhone    = empInfo.EmergencyData.Phone,
                        JobTitle        = empInfo.GeneralInfo.JobTitle
                    },
                    EmployeeSustitute = new Core.PdfCreator.FormatData.FormatEmployeeSustitute()
                    {
                        Name     = $"{sustitute.GeneralInfo.FirstName} {sustitute.GeneralInfo.LastName} {sustitute.GeneralInfo.LastName2}",
                        JobTitle = sustitute.GeneralInfo.JobTitle
                    },
                    FormatVacationData = vacationInfo
                }, fileName);
            }
            catch (Exception ex)
            {
                byte[] FileBytesError = System.Text.Encoding.UTF8.GetBytes(ex.Message);
                return(File(FileBytesError, "text/plain"));
            }


            byte[] FileBytes = System.IO.File.ReadAllBytes(fileName);
            return(File(FileBytes, "application/pdf"));
        }