public async Task <IActionResult> Create(ExperienciaLaboralRequerida ExperienciaLaboralRequerida)
        {
            if (!ModelState.IsValid)
            {
                InicializarMensaje(null);
                return(View(ExperienciaLaboralRequerida));
            }
            Response response = new Response();

            try
            {
                response = await apiServicio.InsertarAsync(ExperienciaLaboralRequerida,
                                                           new Uri(WebApp.BaseAddress),
                                                           "api/ExperienciaLaboralRequeridas/InsertarExperienciaLaboralRequerida");

                if (response.IsSuccess)
                {
                    var responseLog = await GuardarLogService.SaveLogEntry(new LogEntryTranfer
                    {
                        ApplicationName      = Convert.ToString(Aplicacion.WebAppTh),
                        ExceptionTrace       = null,
                        Message              = "Se ha creado una experiencia laboral requerida",
                        UserName             = "******",
                        LogCategoryParametre = Convert.ToString(LogCategoryParameter.Create),
                        LogLevelShortName    = Convert.ToString(LogLevelParameter.ADV),
                        EntityID             = string.Format("{0} {1}", "Experiencia Laboral Requerida:", ExperienciaLaboralRequerida.IdExperienciaLaboralRequerida),
                    });

                    return(RedirectToAction("Index"));
                }

                ViewData["Error"] = response.Message;
                ViewData["IdEspecificidadExperiencia"] = new Microsoft.AspNetCore.Mvc.Rendering.SelectList(await apiServicio.Listar <EspecificidadExperiencia>(new Uri(WebApp.BaseAddress), "api/EspecificidadesExperiencia/ListarEspecificidadesExperiencia"), "IdEspecificidadExperiencia", "Descripcion");
                //ViewData["IdAnoExperiencia"] = new Microsoft.AspNetCore.Mvc.Rendering.SelectList(await apiServicio.Listar<AnoExperiencia>(new Uri(WebApp.BaseAddress), "api/AnosExperiencia/ListarAnosExperiencia"), "IdAnoExperiencia", "Descripcion");
                ViewData["IdEstudio"] = new Microsoft.AspNetCore.Mvc.Rendering.SelectList(await apiServicio.Listar <Estudio>(new Uri(WebApp.BaseAddress), "api/Estudios/ListarEstudios"), "IdEstudio", "Nombre");

                return(View(ExperienciaLaboralRequerida));
            }
            catch (Exception ex)
            {
                await GuardarLogService.SaveLogEntry(new LogEntryTranfer
                {
                    ApplicationName      = Convert.ToString(Aplicacion.WebAppTh),
                    Message              = "Creando una experiencia laboral requerida",
                    ExceptionTrace       = ex.Message,
                    LogCategoryParametre = Convert.ToString(LogCategoryParameter.Create),
                    LogLevelShortName    = Convert.ToString(LogLevelParameter.ERR),
                    UserName             = "******"
                });

                return(BadRequest());
            }
        }
        public async Task <Response> PostExperienciaLaboralRequerida([FromBody] ExperienciaLaboralRequerida ExperienciaLaboralRequerida)
        {
            try
            {
                if (!ModelState.IsValid)
                {
                    return(new Response
                    {
                        IsSuccess = false,
                        Message = ""
                    });
                }

                var respuesta = Existe(ExperienciaLaboralRequerida);
                if (!respuesta.IsSuccess)
                {
                    db.ExperienciaLaboralRequerida.Add(ExperienciaLaboralRequerida);
                    await db.SaveChangesAsync();

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

                return(new Response
                {
                    IsSuccess = false,
                    Message = Mensaje.ExisteRegistro,
                });
            }
            catch (Exception ex)
            {
                await GuardarLogService.SaveLogEntry(new LogEntryTranfer
                {
                    ApplicationName      = Convert.ToString(Aplicacion.SwTH),
                    ExceptionTrace       = ex.Message,
                    Message              = Mensaje.Excepcion,
                    LogCategoryParametre = Convert.ToString(LogCategoryParameter.Critical),
                    LogLevelShortName    = Convert.ToString(LogLevelParameter.ERR),
                    UserName             = "",
                });

                return(new Response
                {
                    IsSuccess = false,
                    Message = Mensaje.Error,
                });
            }
        }
        public async Task <IActionResult> Edit(string id, ExperienciaLaboralRequerida ExperienciaLaboralRequerida)
        {
            Response response = new Response();

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

                    if (response.IsSuccess)
                    {
                        await GuardarLogService.SaveLogEntry(new LogEntryTranfer
                        {
                            ApplicationName      = Convert.ToString(Aplicacion.WebAppTh),
                            EntityID             = string.Format("{0} : {1}", "Experiencia Laboral Requerida:", id),
                            LogCategoryParametre = Convert.ToString(LogCategoryParameter.Edit),
                            LogLevelShortName    = Convert.ToString(LogLevelParameter.ADV),
                            Message  = "Se ha actualizado una experiencia laboral requerida",
                            UserName = "******"
                        });

                        return(RedirectToAction("Index"));
                    }
                    ViewData["Error"] = response.Message;

                    ViewData["IdEspecificidadExperiencia"] = new Microsoft.AspNetCore.Mvc.Rendering.SelectList(await apiServicio.Listar <EspecificidadExperiencia>(new Uri(WebApp.BaseAddress), "api/EspecificidadesExperiencia/ListarEspecificidadesExperiencia"), "IdEspecificidadExperiencia", "Descripcion");
                    // ViewData["IdAnoExperiencia"] = new Microsoft.AspNetCore.Mvc.Rendering.SelectList(await apiServicio.Listar<AnoExperiencia>(new Uri(WebApp.BaseAddress), "api/AnosExperiencia/ListarAnosExperiencia"), "IdAnoExperiencia", "Descripcion");
                    ViewData["IdEstudio"] = new Microsoft.AspNetCore.Mvc.Rendering.SelectList(await apiServicio.Listar <Estudio>(new Uri(WebApp.BaseAddress), "api/Estudios/ListarEstudios"), "IdEstudio", "Nombre");

                    return(View(ExperienciaLaboralRequerida));
                }
                return(BadRequest());
            }
            catch (Exception ex)
            {
                await GuardarLogService.SaveLogEntry(new LogEntryTranfer
                {
                    ApplicationName      = Convert.ToString(Aplicacion.WebAppTh),
                    Message              = "Editando una experiencia laboral requerida",
                    ExceptionTrace       = ex.Message,
                    LogCategoryParametre = Convert.ToString(LogCategoryParameter.Edit),
                    LogLevelShortName    = Convert.ToString(LogLevelParameter.ERR),
                    UserName             = "******"
                });

                return(BadRequest());
            }
        }
        private Response Existe(ExperienciaLaboralRequerida ExperienciaLaboralRequerida)
        {
            var ExperienciaLaboralRequeridarespuesta = db.ExperienciaLaboralRequerida.Where(p => p.IdEspecificidadExperiencia == ExperienciaLaboralRequerida.IdEspecificidadExperiencia && p.IdEstudio == ExperienciaLaboralRequerida.IdEstudio && p.AnoExperiencia == ExperienciaLaboralRequerida.AnoExperiencia && p.MesExperiencia == ExperienciaLaboralRequerida.MesExperiencia).FirstOrDefault();

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

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

                var existe = Existe(experienciaLaboralRequerida);
                var ExperienciaLaboralRequeridaActualizar = (ExperienciaLaboralRequerida)existe.Resultado;
                if (existe.IsSuccess)
                {
                    //if (ExperienciaLaboralRequeridaActualizar.IdExperienciaLaboralRequerida == experienciaLaboralRequerida.IdExperienciaLaboralRequerida)
                    //{
                    //    return new Response
                    //    {
                    //        IsSuccess = true,
                    //    };
                    //}
                    return(new Response
                    {
                        IsSuccess = false,
                        Message = Mensaje.ExisteRegistro,
                    });
                }
                var ExperienciaLaboralRequerida = db.ExperienciaLaboralRequerida.Find(experienciaLaboralRequerida.IdExperienciaLaboralRequerida);

                ExperienciaLaboralRequerida.IdEspecificidadExperiencia = experienciaLaboralRequerida.IdEspecificidadExperiencia;
                ExperienciaLaboralRequerida.AnoExperiencia             = experienciaLaboralRequerida.AnoExperiencia;
                ExperienciaLaboralRequerida.MesExperiencia             = experienciaLaboralRequerida.MesExperiencia;
                ExperienciaLaboralRequerida.IdEstudio = experienciaLaboralRequerida.IdEstudio;
                db.ExperienciaLaboralRequerida.Update(ExperienciaLaboralRequerida);
                await db.SaveChangesAsync();

                return(new Response
                {
                    IsSuccess = true,
                    Message = Mensaje.Satisfactorio,
                });
            }
            catch (Exception ex)
            {
                await GuardarLogService.SaveLogEntry(new LogEntryTranfer
                {
                    ApplicationName      = Convert.ToString(Aplicacion.SwTH),
                    ExceptionTrace       = ex.Message,
                    Message              = Mensaje.Excepcion,
                    LogCategoryParametre = Convert.ToString(LogCategoryParameter.Critical),
                    LogLevelShortName    = Convert.ToString(LogLevelParameter.ERR),
                    UserName             = "",
                });

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