Ejemplo n.º 1
0
        public IHttpActionResult PostTblEmpleados(TblEmpleados tblEmpleados)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            db.TblEmpleados.Add(tblEmpleados);

            try
            {
                db.SaveChanges();
            }
            catch (DbUpdateException)
            {
                if (TblEmpleadosExists(tblEmpleados.cedula))
                {
                    return(Conflict());
                }
                else
                {
                    throw;
                }
            }

            return(CreatedAtRoute("DefaultApi", new { id = tblEmpleados.cedula }, tblEmpleados));
        }
Ejemplo n.º 2
0
        public IHttpActionResult PutTblEmpleados(decimal id, TblEmpleados tblEmpleados)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            if (id != tblEmpleados.cedula)
            {
                return(BadRequest());
            }

            db.Entry(tblEmpleados).State = EntityState.Modified;

            try
            {
                db.SaveChanges();
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!TblEmpleadosExists(id))
                {
                    return(NotFound());
                }
                else
                {
                    throw;
                }
            }

            return(StatusCode(HttpStatusCode.NoContent));
        }
        public ActionResult DeleteConfirmed(int id)
        {
            TblEmpleados tblEmpleados = db.Empleados.Find(id);

            db.Empleados.Remove(tblEmpleados);
            db.SaveChanges();
            return(RedirectToAction("Index"));
        }
 public ActionResult Edit([Bind(Include = "IdEmpleado,Nombre,Apellido,Edad,Dui,Nit,Direccion,Telefono,Celular,Sexo,EstadoCivil,Cargo")] TblEmpleados tblEmpleados)
 {
     if (ModelState.IsValid)
     {
         db.Entry(tblEmpleados).State = EntityState.Modified;
         db.SaveChanges();
         return(RedirectToAction("Index"));
     }
     return(View(tblEmpleados));
 }
Ejemplo n.º 5
0
        public IHttpActionResult GetTblEmpleados(decimal id)
        {
            TblEmpleados tblEmpleados = db.TblEmpleados.Find(id);

            if (tblEmpleados == null)
            {
                return(NotFound());
            }

            return(Ok(tblEmpleados));
        }
        // GET: Empleados/Delete/5
        public ActionResult Delete(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            TblEmpleados tblEmpleados = db.Empleados.Find(id);

            if (tblEmpleados == null)
            {
                return(HttpNotFound());
            }
            return(View(tblEmpleados));
        }
Ejemplo n.º 7
0
        public IHttpActionResult DeleteTblEmpleados(decimal id)
        {
            TblEmpleados tblEmpleados = db.TblEmpleados.Find(id);

            if (tblEmpleados == null)
            {
                return(NotFound());
            }

            db.TblEmpleados.Remove(tblEmpleados);
            db.SaveChanges();

            return(Ok(tblEmpleados));
        }
Ejemplo n.º 8
0
        public ActionResult AgregarOEditar(int id = 0)
        {
            TblEmpleados resultado = new TblEmpleados();

            try
            {
                if (id != 0)
                {
                    using (ConexionEntities db = new ConexionEntities())
                    {
                        resultado = db.TblEmpleado.Find(id);
                    }
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }

            return(View(resultado));
        }
Ejemplo n.º 9
0
        public ActionResult AgregarOEditar(TblEmpleados _Empleado)
        {
            try
            {
                if (_Empleado.IdEmpleado == 0)
                {
                    using (ConexionEntities db = new ConexionEntities())
                    {
                        db.TblEmpleado.Add(_Empleado);
                        db.SaveChanges();
                    }

                    return(Json(new { success = true, message = "Registro Exitoso" }, JsonRequestBehavior.AllowGet));
                }
                else
                {
                    using (ConexionEntities db = new ConexionEntities())
                    {
                        var _modificar = db.TblEmpleado.Find(_Empleado.IdEmpleado);
                        if (_modificar != null)
                        {
                            _modificar.Nombres   = _Empleado.Nombres;
                            _modificar.Apellidos = _Empleado.Apellidos;
                            _modificar.Edad      = _Empleado.Edad;
                            _modificar.Oficio    = _Empleado.Oficio;
                            _modificar.Salario   = _Empleado.Salario;

                            db.SaveChanges();
                        }
                    }

                    return(Json(new { success = true, message = "Registro Actualizado" }, JsonRequestBehavior.AllowGet));
                }
            }
            catch (Exception ex)
            {
                return(Json(new { success = false, message = ex.Message }, JsonRequestBehavior.AllowGet));
            }
        }
Ejemplo n.º 10
0
        private void Ejecutar()
        {
            IConfiguration config = ConfigHelper.GetConfiguration();

            #region Descargar y guardar fichero del FTP
            //string servidorftp = "ftp://gentalia.ddns.net/SincronizadorDE/DATOSLOGA_V2.xls";
            string servidorftp    = config["FTPLoga"];
            string usuario        = config["FTPuser"];
            string password       = config["FTPPassword"];
            string carpetaDestino = config["RutaFileTemp"];// "D:\\InOut";
            string remoteFile     = config["FileLoga"];

            string fileName = remoteFile.Substring(remoteFile.LastIndexOf("/") + 1);

            int NumberOfRetries = Convert.ToInt16(config["CantDeReintentos"]);
            int DelayOnRetry    = 1000;
            DownloadFile(servidorftp, remoteFile, usuario, password, carpetaDestino);

            for (int i = 1; i <= NumberOfRetries; ++i)
            {
                try
                {
                    _listaLoga = ProcessLOGAWorkbook(carpetaDestino + "\\" + fileName);
                    Log("Fichero LOGA procesado");
                    break; // When done we can break loop
                }
                catch (IOException ex) when(i <= NumberOfRetries)
                {
                    // You may check error code to filter some exceptions, not every error
                    // can be recovered.
                    System.Threading.Thread.Sleep(DelayOnRetry);
                    if (i == NumberOfRetries)
                    {
                        Log("Error procesando el fichero LOGA: " + ex.ToString());
                    }
                }
            }

            if (Intervalo.nextTimeToExecute == 1)
            {
                //Si es la primera hora del día se intenta descargar el archivo de Absentismos
                remoteFile = config["FileAbsentismos"];
                fileName   = remoteFile.Substring(remoteFile.LastIndexOf("/") + 1);

                DownloadFile(servidorftp, remoteFile, usuario, password, carpetaDestino);

                for (int i = 1; i <= NumberOfRetries; ++i)
                {
                    try
                    {
                        _listaAbsentismo = ProcessAbsentismosWorkbook(carpetaDestino + "\\" + fileName);
                        Log("Fichero de Absentismos procesado");
                        break; // When done we can break loop
                    }
                    catch (IOException ex) when(i <= NumberOfRetries)
                    {
                        // You may check error code to filter some exceptions, not every error
                        // can be recovered.
                        System.Threading.Thread.Sleep(DelayOnRetry);
                        if (i == NumberOfRetries)
                        {
                            Log("Error procesando el fichero de Absentismos: " + ex.ToString());
                        }
                    }
                }
            }
            #endregion

            #region Salvar empleado en la base de datos si no existe
            try
            {
                TblEmpleados employeeFound;
                int          encontrados = 0;
                int          creados     = 0;
                using (var context = new SINCRODEDBContext())
                {
                    int maxidEmp = context.TblEmpleados.Any() ? context.TblEmpleados.Max(e => e.IdEmp) : 0;

                    Log("Salvando empleados en la BD SincroDE");
                    foreach (CamposLOGA campo in _listaLoga)
                    {
                        employeeFound = context.TblEmpleados.FirstOrDefault(s => s.DniEmp == campo.NifDni);

                        //Si no encuentra el empleado lo inserta
                        if (employeeFound != null)
                        {
                            employeeFound.NombreEmp            = TruncateStr(campo.Nombre, 100);
                            employeeFound.ApellidosEmp         = TruncateStr(campo.Apellidos, 100);
                            employeeFound.NumeroEmp            = TruncateStr(campo.NoPersonal, 20);
                            employeeFound.IdoracleEmp          = TruncateStr(campo.IdOracle, 20);
                            employeeFound.DniSuperior          = TruncateStr(campo.DniSuperior, 20);
                            employeeFound.CodcenEmp            = TruncateStr(campo.CodigoCentro, 50);
                            employeeFound.UbicenEmp            = TruncateStr(campo.UbicacionCentroTrabajo, 30);
                            employeeFound.CoddepEmp            = TruncateStr(campo.CodigoDepartamento, 50);
                            employeeFound.DescdepEmp           = TruncateStr(campo.DescripcionCentroTrabajo, 50);
                            employeeFound.PNRSupEmp            = TruncateStr(campo.PNRSupEmp, 20);
                            employeeFound.NombresupEmp         = TruncateStr(campo.NombreResponsable, 50);
                            employeeFound.ApellidossupEmp      = TruncateStr(campo.ApellidosResponsable, 50);
                            employeeFound.CodnegocioEmp        = TruncateStr(campo.CodigoNegocio, 20);
                            employeeFound.CodsociedadEmp       = TruncateStr(campo.CodigoSociedad, 20);
                            employeeFound.CodsubnegocioEmp     = TruncateStr(campo.CodigoSubNegocio, 20);
                            employeeFound.DesccentrabajoEmp    = TruncateStr(campo.DescripcionCentroTrabajo, 50);
                            employeeFound.Descnegocio          = TruncateStr(campo.DescripcionNegocio, 50);
                            employeeFound.DescsociedadEmp      = TruncateStr(campo.DescripcionSociedad, 50);
                            employeeFound.DescsubnegocioEmp    = TruncateStr(campo.DescripcionSubNegocio, 50);
                            employeeFound.JornlaboralDomingo   = campo.JornadaLaboralDomingo;
                            employeeFound.JornlaboralLunes     = campo.JornadaLaboralLunes;
                            employeeFound.JornlaboralMartes    = campo.JornadaLaboralMartes;
                            employeeFound.JornlaboralMiercoles = campo.JornadaLaboralMiercoles;
                            employeeFound.JornlaboralJueves    = campo.JornadaLaboralJueves;
                            employeeFound.JornlaboralViernes   = campo.JornadaLaboralViernes;
                            employeeFound.JornlaboralSabado    = campo.JornadaLaboralSabado;
                            employeeFound.JornlaboralFestivo   = campo.JornadaLaboralFestiva;
                            employeeFound.PorcenjornadaEmp     = campo.PorcentajeReduccionJornada;
                            employeeFound.TipocontratoEmp      = campo.TipoContrato;
                            employeeFound.CodcontratoEmp       = campo.CodContratoEmp;
                            employeeFound.Ad           = TruncateStr(campo.Ad, 50);
                            employeeFound.CojornadaEmp = campo.CoJornadaEmp;
                            employeeFound.EmailEmp     = campo.EmailEmp;

                            context.TblEmpleados.Update(employeeFound);
                            encontrados++;
                        }
                        else
                        {
                            var empl = new TblEmpleados()
                            {
                                IdEmp                = ++maxidEmp,
                                NombreEmp            = TruncateStr(campo.Nombre, 100),
                                ApellidosEmp         = TruncateStr(campo.Apellidos, 100),
                                DniEmp               = TruncateStr(campo.NifDni, 20),
                                NumeroEmp            = TruncateStr(campo.NoPersonal, 20),
                                IdoracleEmp          = TruncateStr(campo.IdOracle, 20),
                                DniSuperior          = TruncateStr(campo.DniSuperior, 20),
                                CodcenEmp            = TruncateStr(campo.CodigoCentro, 50),
                                UbicenEmp            = TruncateStr(campo.UbicacionCentroTrabajo, 30),
                                CoddepEmp            = TruncateStr(campo.CodigoDepartamento, 50),
                                DescdepEmp           = TruncateStr(campo.DescripcionCentroTrabajo, 50),
                                PNRSupEmp            = TruncateStr(campo.PNRSupEmp, 20),
                                NombresupEmp         = TruncateStr(campo.NombreResponsable, 50),
                                ApellidossupEmp      = TruncateStr(campo.ApellidosResponsable, 50),
                                CodnegocioEmp        = TruncateStr(campo.CodigoNegocio, 20),
                                CodsociedadEmp       = TruncateStr(campo.CodigoSociedad, 20),
                                CodsubnegocioEmp     = TruncateStr(campo.CodigoSubNegocio, 20),
                                DesccentrabajoEmp    = TruncateStr(campo.DescripcionCentroTrabajo, 50),
                                Descnegocio          = TruncateStr(campo.DescripcionNegocio, 50),
                                DescsociedadEmp      = TruncateStr(campo.DescripcionSociedad, 50),
                                DescsubnegocioEmp    = TruncateStr(campo.DescripcionSubNegocio, 50),
                                JornlaboralDomingo   = campo.JornadaLaboralDomingo,   //TODO
                                JornlaboralLunes     = campo.JornadaLaboralLunes,     //TODO
                                JornlaboralMartes    = campo.JornadaLaboralMartes,    //TODO
                                JornlaboralMiercoles = campo.JornadaLaboralMiercoles, //TODO
                                JornlaboralJueves    = campo.JornadaLaboralJueves,    //TODO
                                JornlaboralViernes   = campo.JornadaLaboralViernes,   //TODO
                                JornlaboralSabado    = campo.JornadaLaboralSabado,    //TODO
                                JornlaboralFestivo   = campo.JornadaLaboralFestiva,   //TODO
                                PorcenjornadaEmp     = campo.PorcentajeReduccionJornada,
                                TipocontratoEmp      = campo.TipoContrato,
                                CodcontratoEmp       = campo.CodContratoEmp,
                                Ad           = TruncateStr(campo.Ad, 50),
                                CojornadaEmp = campo.CoJornadaEmp,
                                EmailEmp     = campo.EmailEmp
                            };
                            context.TblEmpleados.Add(empl);
                            creados++;
                        }
                    }
                    context.SaveChanges();
                    Log("Total de empleados en el fichero LOGA: " + _listaLoga.Count + "  Empleados encontrados: " + encontrados + "  Empleados creados: " + creados);


                    Log("Enviando empleados al WS de Evalos");
                    creados     = 0;
                    encontrados = 0;
                    foreach (var empleado in context.TblEmpleados)
                    {
                        #region Consumir el WebService de Evalos para cada empleado que se crea
                        var    wsEvalosMethod = config["EvalosAccess"] + "employee";
                        string userEvalos     = config["EvalosUser"];
                        string passwordEvalos = config["EvalosPassword"];

                        var tracews = "Get Employee: URL: " + wsEvalosMethod + " DNI: " + empleado.DniEmp;
                        try
                        {
                            //string employee;
                            //employee = WebServiceRest.GetEmployee(wsEvalosMethod, userEvalos, passwordEvalos, empleado.DniEmp);
                            //Log("Se obtuvo el employee del WS: " + employee);
                            //if (employee == null || employee == string.Empty || employee == "null")
                            //{
                            string codigoKiosko = "000";
                            if (context.TblEmpleados.Any(e => e.DniSuperior == empleado.DniEmp))
                            {
                                codigoKiosko = ObtenerCodigoSupervisor(empleado.DniEmp);
                            }
                            string emailEmp = string.IsNullOrEmpty(empleado.EmailEmp) || !IsValidEmail(empleado.EmailEmp) ? string.Empty : empleado.EmailEmp;
                            //Mando a crear el empleado en Evalos
                            //Creo el json con los datos q debo enviarle al ws
                            var employeeData = new Employee
                            {
                                Code           = empleado.DniEmp,
                                Description    = empleado.NombreEmp + " " + empleado.ApellidosEmp,
                                CodeArea       = empleado.UbicenEmp,
                                CodeDepartment = empleado.CodnegocioEmp,
                                CodeCompany    = empleado.CodsociedadEmp,
                                CodeSection    = empleado.CodsubnegocioEmp,
                                DateAdd        = "20190901",
                                CodeAccess     = "999",
                                CodeCorrection = "100",
                                CodeSchedule   = "1ES",
                                CustomFields   = new CustomField
                                {
                                    EM_IDORACLE     = empleado.IdoracleEmp,
                                    EM_NUMPERSO     = empleado.NumeroEmp,
                                    EM_TIPOCONTRATO = empleado.TipocontratoEmp.ToString().PadLeft(3, '0'),
                                    EM_REDUCCION    = Math.Truncate(empleado.PorcenjornadaEmp ?? 0).ToString().PadLeft(3, '0'),
                                    EM_NIEJERARQUIA = empleado.DniSuperior
                                },
                                Observations = string.Empty,
                                CodeWorkflow = ((empleado.CodcontratoEmp == "TT") ||
                                                (empleado.CodcontratoEmp == "CW") ||
                                                (empleado.CodcontratoEmp == "FT") ||
                                                (empleado.CodcontratoEmp == "FC") ? "200" : "100"),
                                CodeKiosk           = codigoKiosko,
                                Email               = emailEmp,
                                CodePatternCalendar = ((empleado.CodcontratoEmp == "FW") ||
                                                       (empleado.CodcontratoEmp == "FT") ||
                                                       (empleado.CodcontratoEmp == "FC") ? "1FW" : "1ES"),
                                PatternCalendarData = new PatternCalendar
                                {
                                    StartDate = "20190101",
                                    EndDate   = "20991231",
                                    Replace   = true
                                }
                            };
                            string employeejson = JsonConvert.SerializeObject(employeeData);
                            Log("Enviado al PUT de empleado " + employeejson);
                            tracews = "Put Employee: URL: " + wsEvalosMethod + " json: " + employeejson;
                            var httpWebResponse = WebServiceRest.PutPostRequest(wsEvalosMethod, userEvalos, passwordEvalos, employeejson, "PUT");

                            if (httpWebResponse.StatusCode == HttpStatusCode.OK)
                            {
                                creados++;
                            }
                            else
                            {
                                if (config["ShowDetailsLog"].ToUpper() == "TRUE")
                                {
                                    Log("Respuesta erronea del PUT " + httpWebResponse.StatusCode + " => " + httpWebResponse.StatusDescription);
                                }
                            }
                            //}
                            //else
                            //{
                            //  encontrados++;
                            //}
                        }
                        catch (Exception ex)
                        {
                            Log("Excepción en el consumo del WS de Evalos " + tracews + ": " + ex.ToString());
                        }
                        #endregion
                    }
                    //Log("Total de empleados en la BD SincroDE: " + context.TblEmpleados.Count().ToString() + "  Empleados encontrados en Evalos: " + encontrados + "  Empleados enviados: " + creados);
                    Log("Total de empleados en la BD SincroDE: " + context.TblEmpleados.Count().ToString() + "  Empleados enviados: " + creados);
                }
            }
            catch (Exception ex)
            {
                Log("Error salvando empleados en la BD Sincrode: " + ex.ToString());
            }
            #endregion

            #region Procesando marcajes

            Log("Comienzo del proceso de marcaje");
            //Llamando al métodos para procesar los marcajes
            string paramFecini = config["FechaInicialPrueba"];
            string paraFecFin  = config["FechaFinalPrueba"];

            DateTime fechaini  = new DateTime();
            DateTime fechafin  = new DateTime();
            bool     setfechas = true;
            //si no se logra obtener una fecha válida se asume q no estan bien puestos los parámetros
            if (string.IsNullOrEmpty(paramFecini) || string.IsNullOrEmpty(paraFecFin))
            {
                MarcajesDassnet.ProcesaMarcajes();
            }
            else
            {
                try
                {
                    fechaini = DateTime.ParseExact(paramFecini + " 00:00:00", "yyyy-MM-dd HH:mm:ss", System.Globalization.CultureInfo.InvariantCulture);
                    fechafin = DateTime.ParseExact(paraFecFin + " 23:59:59", "yyyy-MM-dd HH:mm:ss", System.Globalization.CultureInfo.InvariantCulture);
                }
                catch (Exception)
                {
                    setfechas = false;
                }

                if (setfechas)
                {
                    Log("Se procesa desde " + fechaini + " hasta " + fechafin);
                    MarcajesDassnet.ProcesaMarcajesRango(fechaini, fechafin);
                }
                else
                {
                    Log("Fechas de parámetro incorrectas. Se procesa a partir de la última fecha procesada");
                    MarcajesDassnet.ProcesaMarcajes();
                }
            }

            #endregion

            #region Salvar ausencias en la base de datos

            if (Intervalo.nextTimeToExecute == 1)
            {
                Log("Se comienzan a procesar las ausencias en la base de datos");

                //si no se logra obtener una fecha válida se asume q no estan bien puestos los parámetros
                if (string.IsNullOrEmpty(paramFecini) || string.IsNullOrEmpty(paraFecFin))
                {
                    ProcesaAusencias();
                }
                else
                {
                    try
                    {
                        fechaini = DateTime.ParseExact(paramFecini + " 00:00:00", "yyyy-MM-dd HH:mm:ss", System.Globalization.CultureInfo.InvariantCulture);
                        fechafin = DateTime.ParseExact(paraFecFin + " 23:59:59", "yyyy-MM-dd HH:mm:ss", System.Globalization.CultureInfo.InvariantCulture);
                    }
                    catch (Exception)
                    {
                        setfechas = false;
                    }

                    if (setfechas)
                    {
                        Log("Se procesa desde " + fechaini + " hasta " + fechafin);
                        ProcesaAusencias(fechaini, fechafin);
                    }
                    else
                    {
                        Log("Fechas de parámetro incorrectas. Se procesa a partir de la última fecha procesada");
                        ProcesaAusencias();
                    }
                }
            }


            #endregion
        }