public async Task <IActionResult> Edit(TipoDeGastoPersonal TipoDeGastoPersonal)
        {
            if (!ModelState.IsValid)
            {
                return(View(TipoDeGastoPersonal));
            }
            Response response = new Response();

            try
            {
                if (TipoDeGastoPersonal.IdTipoGastoPersonal > 0)
                {
                    response = await apiServicio.EditarAsync <Response>(TipoDeGastoPersonal, new Uri(WebApp.BaseAddress),
                                                                        "api/TipoDeGastoPersonal/EditarTipoDeGastoPersonal");

                    if (response.IsSuccess)
                    {
                        return(this.Redireccionar($"{Mensaje.Informacion}|{Mensaje.Satisfactorio}"));
                    }
                    this.TempData["Mensaje"] = $"{Mensaje.Error}|{response.Message}";
                    return(View(TipoDeGastoPersonal));
                }
                return(this.Redireccionar($"{Mensaje.Error}|{Mensaje.ErrorEditar}"));
            }
            catch (Exception)
            {
                return(this.Redireccionar($"{Mensaje.Error}|{Mensaje.ErrorEditar}"));
            }
        }
        public async Task <IActionResult> Delete(string id)
        {
            try
            {
                if (string.IsNullOrEmpty(id))
                {
                    return(this.Redireccionar($"{Mensaje.Error}|{Mensaje.ErrorCargarDatos}"));
                }
                var tipoConjuntoEliminar = new TipoDeGastoPersonal {
                    IdTipoGastoPersonal = Convert.ToInt32(id)
                };

                var response = await apiServicio.EliminarAsync(tipoConjuntoEliminar, new Uri(WebApp.BaseAddress)
                                                               , "api/TipoDeGastoPersonal/EliminarTipoDeGastoPersonal");

                if (response.IsSuccess)
                {
                    return(this.Redireccionar($"{Mensaje.Informacion}|{Mensaje.Satisfactorio}"));
                }
                return(this.Redireccionar($"{Mensaje.Error}|{Mensaje.BorradoNoSatisfactorio}"));
            }
            catch (Exception)
            {
                return(this.Redireccionar($"{Mensaje.Error}|{Mensaje.ErrorEliminar}"));
            }
        }
        public async Task <IActionResult> Edit(string id)
        {
            try
            {
                if (!string.IsNullOrEmpty(id))
                {
                    var TipoDeGastoPersonal = new TipoDeGastoPersonal {
                        IdTipoGastoPersonal = Convert.ToInt32(id)
                    };
                    var respuesta = await apiServicio.ObtenerElementoAsync1 <Response>(TipoDeGastoPersonal, new Uri(WebApp.BaseAddress),
                                                                                       "api/TipoDeGastoPersonal/ObtenerTipoDeGastoPersonal");

                    if (respuesta.IsSuccess)
                    {
                        var vista = JsonConvert.DeserializeObject <TipoDeGastoPersonal>(respuesta.Resultado.ToString());
                        return(View(vista));
                    }
                }

                return(this.Redireccionar($"{Mensaje.Error}|{Mensaje.ErrorCargarDatos}"));
            }
            catch (Exception)
            {
                return(BadRequest());
            }
        }
        public async Task <Response> ObtenerTipoDeGastoPersonal([FromBody] TipoDeGastoPersonal TipoDeGastoPersonal)
        {
            try
            {
                var tipoDeGastoPersonal = await db.TipoDeGastoPersonal.SingleOrDefaultAsync(m => m.IdTipoGastoPersonal == TipoDeGastoPersonal.IdTipoGastoPersonal);

                if (tipoDeGastoPersonal == null)
                {
                    return(new Response
                    {
                        IsSuccess = false,
                        Message = Mensaje.RegistroNoEncontrado,
                    });
                }

                return(new Response
                {
                    IsSuccess = true,
                    Message = Mensaje.Satisfactorio,
                    Resultado = tipoDeGastoPersonal,
                });
            }
            catch (Exception)
            {
                return(new Response
                {
                    IsSuccess = false,
                    Message = Mensaje.Error,
                });
            }
        }
        public async Task <Response> EliminarTipoDeGastoPersonal([FromBody] TipoDeGastoPersonal TipoDeGastoPersonal)
        {
            try
            {
                var respuesta = await db.TipoDeGastoPersonal.Where(m => m.IdTipoGastoPersonal == TipoDeGastoPersonal.IdTipoGastoPersonal).FirstOrDefaultAsync();

                if (respuesta == null)
                {
                    return(new Response
                    {
                        IsSuccess = false,
                        Message = Mensaje.RegistroNoEncontrado,
                    });
                }
                db.TipoDeGastoPersonal.Remove(respuesta);
                await db.SaveChangesAsync();

                return(new Response
                {
                    IsSuccess = true,
                    Message = Mensaje.Satisfactorio,
                });
            }
            catch (Exception)
            {
                return(new Response
                {
                    IsSuccess = false,
                    Message = Mensaje.BorradoNoSatisfactorio,
                });
            }
        }
        public async Task <Response> PostTipoDeGastoPersonal([FromBody] TipoDeGastoPersonal TipoDeGastoPersonal)
        {
            try
            {
                if (!await Existe(TipoDeGastoPersonal))
                {
                    db.TipoDeGastoPersonal.Add(TipoDeGastoPersonal);
                    await db.SaveChangesAsync();

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

                return(new Response
                {
                    IsSuccess = false,
                    Message = Mensaje.ExisteRegistro
                });
            }
            catch (Exception ex)
            {
                return(new Response
                {
                    IsSuccess = false,
                    Message = Mensaje.Error,
                });
            }
        }
        private async Task <bool> Existe(TipoDeGastoPersonal TipoDeGastoPersonal)
        {
            var bdd = TipoDeGastoPersonal.Descripcion.ToUpper().TrimEnd().TrimStart();
            var TipoDeGastoPersonalrespuesta = await db.TipoDeGastoPersonal.Where(p => p.Descripcion.ToUpper().TrimStart().TrimEnd() == bdd).FirstOrDefaultAsync();

            if (TipoDeGastoPersonalrespuesta == null || TipoDeGastoPersonalrespuesta.IdTipoGastoPersonal == TipoDeGastoPersonal.IdTipoGastoPersonal)
            {
                return(false);
            }
            else
            {
                return(true);
            }
        }
        public async Task <Response> EditarTipoDeGastoPersonal([FromBody] TipoDeGastoPersonal TipoDeGastoPersonal)
        {
            try
            {
                if (await Existe(TipoDeGastoPersonal))
                {
                    return(new Response
                    {
                        IsSuccess = false,
                        Message = Mensaje.ExisteRegistro,
                    });
                }

                var TipoDeGastoPersonalActualizar = await db.TipoDeGastoPersonal.Where(x => x.IdTipoGastoPersonal == TipoDeGastoPersonal.IdTipoGastoPersonal).FirstOrDefaultAsync();

                if (TipoDeGastoPersonalActualizar == null)
                {
                    return(new Response
                    {
                        IsSuccess = false,
                    });
                }

                TipoDeGastoPersonalActualizar.Descripcion = TipoDeGastoPersonal.Descripcion;
                db.TipoDeGastoPersonal.Update(TipoDeGastoPersonalActualizar);
                await db.SaveChangesAsync();

                return(new Response
                {
                    IsSuccess = true,
                    Resultado = TipoDeGastoPersonalActualizar
                });
            }
            catch (Exception)
            {
                return(new Response
                {
                    IsSuccess = false,
                    Message = Mensaje.Excepcion
                });
            }
        }