public async Task <Response> PutTrayectoriaLaboral([FromRoute] int id, [FromBody] TrayectoriaLaboral trayectoriaLaboral)
        {
            try
            {
                if (!ModelState.IsValid)
                {
                    return(new Response
                    {
                        IsSuccess = false,
                        Message = Mensaje.ModeloInvalido
                    });
                }

                var existe = Existe(trayectoriaLaboral);
                var TrayectoriaLaboralActualizar = (TrayectoriaLaboral)existe.Resultado;


                if (existe.IsSuccess && TrayectoriaLaboralActualizar.IdTrayectoriaLaboral != id)
                {
                    return(new Response
                    {
                        IsSuccess = false,
                        Message = Mensaje.ExisteRegistro,
                    });
                }
                var TrayectoriaLaboral = await db.TrayectoriaLaboral.Where(x => x.IdTrayectoriaLaboral == trayectoriaLaboral.IdTrayectoriaLaboral).FirstOrDefaultAsync();

                TrayectoriaLaboral.IdPersona     = trayectoriaLaboral.IdPersona;
                TrayectoriaLaboral.FechaInicio   = trayectoriaLaboral.FechaInicio;
                TrayectoriaLaboral.FechaFin      = trayectoriaLaboral.FechaFin;
                TrayectoriaLaboral.Empresa       = trayectoriaLaboral.Empresa.ToString().ToUpper();
                TrayectoriaLaboral.PuestoTrabajo = trayectoriaLaboral.PuestoTrabajo.ToString().ToUpper();

                TrayectoriaLaboral.DescripcionFunciones = trayectoriaLaboral.DescripcionFunciones != null?
                                                          trayectoriaLaboral.DescripcionFunciones.ToString().ToUpper() : null;

                TrayectoriaLaboral.AreaAsignada = trayectoriaLaboral.AreaAsignada.ToString().ToUpper();
                TrayectoriaLaboral.FormaIngreso = trayectoriaLaboral.FormaIngreso.ToString().ToUpper();

                TrayectoriaLaboral.MotivoSalida = (trayectoriaLaboral.MotivoSalida != null)?trayectoriaLaboral.MotivoSalida.ToString().ToUpper():null;

                TrayectoriaLaboral.TipoInstitucion = trayectoriaLaboral.TipoInstitucion.ToString().ToUpper();
                await db.SaveChangesAsync();

                return(new Response
                {
                    IsSuccess = true,
                    Message = Mensaje.Satisfactorio,
                });
            }
            catch (Exception ex)
            {
                return(new Response
                {
                    IsSuccess = true,
                    Message = Mensaje.Excepcion,
                });
            }
        }
        public async Task <Response> PostTrayectoriaLaboral([FromBody] TrayectoriaLaboral TrayectoriaLaboral)
        {
            try
            {
                if (!ModelState.IsValid)
                {
                    return(new Response
                    {
                        IsSuccess = false,
                        Message = ""
                    });
                }

                var respuesta = Existe(TrayectoriaLaboral);
                if (!respuesta.IsSuccess)
                {
                    // Convertir a mayúsculas
                    TrayectoriaLaboral.Empresa       = TrayectoriaLaboral.Empresa.ToString().ToUpper();
                    TrayectoriaLaboral.PuestoTrabajo = TrayectoriaLaboral.PuestoTrabajo.ToString().ToUpper();
                    TrayectoriaLaboral.AreaAsignada  = TrayectoriaLaboral.AreaAsignada.ToString().ToUpper();
                    TrayectoriaLaboral.FormaIngreso  = TrayectoriaLaboral.FormaIngreso.ToString().ToUpper();

                    TrayectoriaLaboral.MotivoSalida = (TrayectoriaLaboral.MotivoSalida != null)
                        ?TrayectoriaLaboral.MotivoSalida.ToString().ToUpper():null;

                    TrayectoriaLaboral.DescripcionFunciones = (TrayectoriaLaboral.DescripcionFunciones != null)
                        ?TrayectoriaLaboral.DescripcionFunciones.ToString().ToUpper():null;

                    TrayectoriaLaboral.TipoInstitucion = TrayectoriaLaboral.TipoInstitucion.ToString().ToUpper();

                    db.TrayectoriaLaboral.Add(TrayectoriaLaboral);
                    await db.SaveChangesAsync();

                    return(new Response
                    {
                        IsSuccess = true,
                        Message = Mensaje.Satisfactorio
                    });
                }

                return(new Response
                {
                    IsSuccess = false,
                    Message = Mensaje.ExisteRegistro,
                });
            }
            catch (Exception ex)
            {
                return(new Response
                {
                    IsSuccess = false,
                    Message = Mensaje.Error,
                });
            }
        }
        public async Task <IActionResult> EditTrayectoriaLaboral(string id, ViewModelTrayectoriaLaboral viewModelTrayectoriaLaboral)
        {
            Response response = new Response();

            try
            {
                if (!ModelState.IsValid)
                {
                    return(View(viewModelTrayectoriaLaboral));
                }

                var candidato          = ObtenerCandidato();
                var trayectoriaLaboral = new TrayectoriaLaboral()
                {
                    IdTrayectoriaLaboral = viewModelTrayectoriaLaboral.IdTrayectoriaLaboral,
                    FechaInicio          = viewModelTrayectoriaLaboral.FechaInicio,
                    FechaFin             = viewModelTrayectoriaLaboral.FechaFin,
                    Empresa              = viewModelTrayectoriaLaboral.Empresa,
                    PuestoTrabajo        = viewModelTrayectoriaLaboral.PuestoTrabajo,
                    DescripcionFunciones = viewModelTrayectoriaLaboral.DescripcionFunciones,
                    AreaAsignada         = viewModelTrayectoriaLaboral.AreaAsignada,
                    FormaIngreso         = viewModelTrayectoriaLaboral.FormaIngreso,
                    MotivoSalida         = viewModelTrayectoriaLaboral.MotivoSalida,
                    TipoInstitucion      = viewModelTrayectoriaLaboral.TipoInstitucion,
                };

                trayectoriaLaboral.IdPersona = candidato.IdPersona;

                if (!string.IsNullOrEmpty(id))
                {
                    response = await apiServicio.EditarAsync(id, trayectoriaLaboral, new Uri(WebApp.BaseAddress),
                                                             "api/TrayectoriasLaborales");

                    if (response.IsSuccess)
                    {
                        return(RedirectToAction("IndexTrayectoriaLaboral"));
                    }
                    ViewData["Error"] = response.Message;
                    return(View(viewModelTrayectoriaLaboral));
                }
                return(BadRequest());
            }
            catch (Exception ex)
            {
                return(BadRequest());
            }
        }
        private Response Existe(TrayectoriaLaboral TrayectoriaLaboral)
        {
            var fechaInicio          = TrayectoriaLaboral.FechaInicio;
            var fechaFin             = TrayectoriaLaboral.FechaFin;
            var Empresa              = TrayectoriaLaboral.Empresa;
            var PuestoTrabajo        = TrayectoriaLaboral.PuestoTrabajo.ToString().ToUpper();
            var DescripcionFunciones = (TrayectoriaLaboral.DescripcionFunciones != null)?
                                       TrayectoriaLaboral.DescripcionFunciones.ToString().ToUpper():null;

            var tipoInstitucion = TrayectoriaLaboral.TipoInstitucion.ToString().ToUpper();
            var areaAsignada    = TrayectoriaLaboral.AreaAsignada.ToString().ToUpper();
            var formaIngreso    = TrayectoriaLaboral.FormaIngreso.ToString().ToUpper();

            var motivoSalida = (TrayectoriaLaboral.MotivoSalida != null)?
                               TrayectoriaLaboral.MotivoSalida.ToString().ToUpper():null;

            var TrayectoriaLaboralrespuesta = db.TrayectoriaLaboral
                                              .Where(p =>
                                                     p.FechaInicio == fechaInicio &&
                                                     p.FechaFin == fechaFin &&
                                                     p.Empresa == Empresa.ToString().ToUpper() &&
                                                     p.PuestoTrabajo == PuestoTrabajo.ToString().ToUpper() &&
                                                     p.TipoInstitucion == tipoInstitucion.ToString().ToUpper() &&
                                                     p.AreaAsignada == areaAsignada.ToString().ToUpper() &&
                                                     p.FormaIngreso == formaIngreso.ToString().ToUpper()

                                                     ).FirstOrDefault();

            if (TrayectoriaLaboralrespuesta != null)
            {
                return(new Response
                {
                    IsSuccess = true,
                    Message = Mensaje.ExisteRegistro,
                    Resultado = TrayectoriaLaboralrespuesta,
                });
            }

            return(new Response
            {
                IsSuccess = false,
                Resultado = TrayectoriaLaboralrespuesta,
            });
        }