예제 #1
0
        public HttpResponse <ProyectoResponse> ModificarProyecto(ProyectoRequest request)
        {
            if (request == null)
            {
                return(newHttpErrorResponse(new Error("El Proyecto que se intenta modificar es invalido.")));
            }

            using (var db = new GeviApiContext())
            {
                var pro = db.Proyectos
                          .Where(p => p.Nombre.Equals(request.Nombre))
                          .Include(p => p.Cliente)
                          .FirstOrDefault();

                if (pro == null)
                {
                    return(newHttpErrorResponse(new Error("No existe el Proyecto")));
                }

                if (pro.Cliente != null &&
                    pro.Cliente.Nombre.Equals(request.ClienteNombre) &&
                    pro.Nombre.Equals(request.Nombre) &&
                    pro.FechaInicio == request.FechaInicio)
                {
                    return(newHttpErrorResponse(new Error("El proyecto no se modifico")));
                }

                var cli = db.Clientes
                          .Where(c => c.Nombre.Equals(request.ClienteNombre))
                          .Include(c => c.Proyectos)
                          .Include(c => c.Tipo)
                          .FirstOrDefault();
                if (cli != null)
                {
                    pro.Nombre      = request.Nombre;
                    pro.FechaInicio = request.FechaInicio;
                    pro.Cliente     = cli;

                    db.Entry(pro).State = EntityState.Modified;
                    db.SaveChanges();

                    var response = new ProyectoResponse()
                    {
                        Id          = pro.Id,
                        Nombre      = pro.Nombre,
                        FechaInicio = pro.FechaInicio,
                        Cliente     = pro.Cliente?.Nombre
                    };

                    return(newHttpResponse(response));
                }

                return(newHttpErrorResponse(new Error("No existe el cliente")));
            }
        }
        public HttpResponse <UsuarioResponse> CambiarContrasenia(UsuarioRequest request)
        {
            if (request == null)
            {
                return(newHttpErrorResponse(new Error("El usuario que se intenta modificar es invalido.")));
            }

            using (var db = new GeviApiContext())
            {
                var usuario = db.Usuarios
                              .Where(u => u.Id == request.UsuarioId)
                              .FirstOrDefault();

                if (usuario == null)
                {
                    return(newHttpErrorResponse(new Error("No existe el usuario")));
                }

                var encryptionManager = new EncryptionManager();

                var nuevaContraseniaEncriptada = encryptionManager.Encryptdata(request.Contrasenia);
                var viejaContraseniaEncriptada = encryptionManager.Encryptdata(request.ContraseniaVieja);

                if (!usuario.Contrasenia.Equals(viejaContraseniaEncriptada))
                {
                    return(newHttpErrorResponse(new Error("La contraseña actual no es correcta")));
                }

                if (nuevaContraseniaEncriptada == viejaContraseniaEncriptada)
                {
                    return(newHttpErrorResponse(new Error("La nueva contraseña no puede ser igual a la anterior")));
                }

                usuario.Contrasenia = nuevaContraseniaEncriptada;

                db.Entry(usuario).State = EntityState.Modified;
                db.SaveChanges();

                var response = new UsuarioResponse()
                {
                    Id            = usuario.Id,
                    Nombre        = usuario.Nombre,
                    Email         = usuario.Email,
                    EsEmpleado    = usuario is Empleado,
                    FechaRegistro = usuario.FechaRegistro
                };

                return(newHttpResponse(response));
            }
        }
예제 #3
0
        public HttpResponse <GastoResponse> ValidarGasto(ValidacionRequest request)
        {
            if (request == null)
            {
                return(newHttpErrorResponse(new Error("El gasto que se intenta validar es invalido")));
            }

            using (var db = new GeviApiContext())
            {
                var gasto = db.Gastos
                            .Where(g => g.Id == request.Id)
                            .Include(g => g.Tipo)
                            .Include(g => g.Empleado)
                            .Include(g => g.Viaje.Proyecto)
                            .Include(g => g.Moneda)
                            .FirstOrDefault();

                if (gasto != null)
                {
                    gasto.Estado          = request.Estado;
                    db.Entry(gasto).State = EntityState.Modified;
                    db.SaveChanges();

                    var response = new GastoResponse()
                    {
                        Id       = gasto.Id,
                        Moneda   = gasto.Moneda?.Nombre,
                        Estado   = gasto.Estado,
                        Fecha    = gasto.Fecha,
                        Tipo     = gasto.Tipo?.Nombre,
                        Total    = gasto.Total,
                        Empleado = gasto.Empleado?.Nombre,
                        Proyecto = gasto.Viaje?.Proyecto?.Nombre,
                        ViajeId  = gasto.Viaje == null ? 0 : gasto.Viaje.Id
                    };

                    return(newHttpResponse(response));
                }

                return(newHttpErrorResponse(new Error("No existe el gasto")));
            }
        }
        public HttpResponse <UsuarioResponse> ModificarUsuario(UsuarioRequest request)
        {
            if (request == null)
            {
                return(newHttpErrorResponse(new Error("El usuario que se intenta modificar es invalido.")));
            }

            using (var db = new GeviApiContext())
            {
                var usuario = db.Usuarios
                              .Where(u => u.Id == request.UsuarioId)
                              .FirstOrDefault();

                if (usuario == null)
                {
                    return(newHttpErrorResponse(new Error("No existe el usuario")));
                }

                usuario.Nombre = request.Nombre;
                usuario.Email  = request.Email;

                db.Entry(usuario).State = EntityState.Modified;
                db.SaveChanges();

                var response = new UsuarioResponse()
                {
                    Id            = usuario.Id,
                    Nombre        = usuario.Nombre,
                    Email         = usuario.Email,
                    EsEmpleado    = usuario is Empleado,
                    FechaRegistro = usuario.FechaRegistro
                };

                return(newHttpResponse(response));
            }
        }
        public HttpResponse <ViajeResponse> ValidarViaje(ValidacionRequest request)
        {
            if (request == null)
            {
                return(newHttpErrorResponse(new Error("La request es invalida.")));
            }

            using (var db = new GeviApiContext())
            {
                var viaje = db.Viajes
                            .Where(v => v.Id == request.Id)
                            .Include(u => u.Empleado)
                            .Include(w => w.Proyecto.Cliente)
                            .FirstOrDefault();

                if (viaje != null)
                {
                    viaje.Estado          = request.Estado;
                    db.Entry(viaje).State = EntityState.Modified;
                    db.SaveChanges();

                    var response = new ViajeResponse()
                    {
                        Id                    = viaje.Id,
                        EmpleadoId            = viaje.Empleado.Id,
                        EmpleadoNombre        = viaje.Empleado?.Nombre,
                        Estado                = request.Estado,
                        FechaInicio           = viaje.FechaInicio,
                        FechaFin              = viaje.FechaFin,
                        Gastos                = null,
                        Proyecto              = viaje.Proyecto?.Nombre,
                        ClienteProyectoNombre = viaje.Proyecto?.Cliente?.Nombre
                    };

                    if (viaje.Gastos != null)
                    {
                        var gastos = new List <GastoResponse>();

                        foreach (var g in viaje.Gastos)
                        {
                            var nuevoGasto = new GastoResponse()
                            {
                                Id       = g.Id,
                                Estado   = g.Estado,
                                Fecha    = g.Fecha,
                                Moneda   = g.Moneda?.Nombre,
                                Tipo     = g.Tipo?.Nombre,
                                Total    = g.Total,
                                ViajeId  = viaje.Id,
                                Proyecto = g.Viaje?.Proyecto?.Nombre,
                                Empleado = g.Empleado?.Nombre
                            };

                            gastos.Add(nuevoGasto);
                        }

                        response.Gastos = gastos;
                    }

                    return(newHttpResponse(response));
                }
                return(newHttpErrorResponse(new Error("No existe el viaje")));
            }
        }
예제 #6
0
        public HttpResponse <ClienteResponse> ModificarCliente(ClienteRequest request)
        {
            if (request == null)
            {
                return(newHttpErrorResponse(new Error("El cliente que se intenta modificar es invalido.")));
            }

            using (var db = new GeviApiContext())
            {
                var cli = db.Clientes
                          .Where(c => c.Nombre.Equals(request.Nombre))
                          .Include(c => c.Proyectos)
                          .Include(c => c.Tipo)
                          .FirstOrDefault();

                var tipo = db.TipoClientes
                           .Where(t => t.Nombre.Equals(request.Tipo))
                           .FirstOrDefault();

                if (cli == null)
                {
                    return(newHttpErrorResponse(new Error("No existe el cliente")));
                }

                if (cli.Tipo == tipo)
                {
                    return(newHttpErrorResponse(new Error("El cliente ya es de ese tipo")));
                }

                cli.Nombre = request.Nombre;
                cli.Tipo   = tipo;

                db.Entry(cli).State = EntityState.Modified;
                db.SaveChanges();

                var response = new ClienteResponse()
                {
                    Id        = cli.Id,
                    Nombre    = cli.Nombre,
                    Tipo      = cli.Tipo,
                    Proyectos = null
                };

                if (cli.Proyectos != null)
                {
                    var proyectosResponse = new List <ProyectoResponse>();

                    foreach (var p in cli.Proyectos)
                    {
                        var nuevoProyResponse = new ProyectoResponse()
                        {
                            Id      = p.Id,
                            Nombre  = p.Nombre,
                            Cliente = cli.Nombre
                        };
                        proyectosResponse.Add(nuevoProyResponse);
                    }
                    response.Proyectos = proyectosResponse;
                }

                return(newHttpResponse(response));
            }
        }