Exemple #1
0
        public HttpResponse <List <GastoResponse> > Pendientes()
        {
            using (var db = new GeviApiContext())
            {
                var gastosPendientes = db.Gastos
                                       .Where(g => g.Estado == Estado.PENDIENTE_APROBACION)
                                       .Include(g => g.Viaje.Proyecto)
                                       .Include(g => g.Tipo)
                                       .Include(g => g.Empleado)
                                       .Include(g => g.Moneda)
                                       .ToList();

                var response = new List <GastoResponse>();

                foreach (var g in gastosPendientes)
                {
                    var nuevo = new GastoResponse()
                    {
                        Id       = g.Id,
                        Estado   = g.Estado,
                        Fecha    = g.Fecha,
                        Moneda   = g.Moneda?.Nombre,
                        Tipo     = g.Tipo?.Nombre,
                        Total    = g.Total,
                        Empleado = g.Empleado?.Nombre,
                        Proyecto = g.Viaje?.Proyecto?.Nombre,
                        ViajeId  = g.Viaje == null ? 0 : g.Viaje.Id
                    };

                    response.Add(nuevo);
                }

                return(newHttpListResponse(response));
            }
        }
        public HttpResponse <List <ViajeResponse> > Pendientes()
        {
            using (var db = new GeviApiContext())
            {
                var viajes = db.Viajes
                             .Where(v => v.Estado == Estado.PENDIENTE_APROBACION)
                             .Include(v => v.Empleado)
                             .Include(v => v.Gastos.Select(g => g.Tipo))
                             .Include(v => v.Gastos.Select(g => g.Moneda))
                             .Include(v => v.Proyecto.Cliente)
                             .ToList();

                var response = new List <ViajeResponse>();

                foreach (var v in viajes)
                {
                    var nuevo = new ViajeResponse()
                    {
                        Id                    = v.Id,
                        EmpleadoId            = v.Empleado.Id,
                        Estado                = v.Estado,
                        FechaFin              = v.FechaFin,
                        FechaInicio           = v.FechaInicio,
                        Gastos                = null,
                        Proyecto              = v.Proyecto?.Nombre,
                        ClienteProyectoNombre = v.Proyecto?.Cliente?.Nombre,
                        EmpleadoNombre        = v.Empleado?.Nombre
                    };

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

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

                            gastosRespone.Add(nuevoGastoResponse);
                        }

                        nuevo.Gastos = gastosRespone;
                    }

                    response.Add(nuevo);
                }

                return(newHttpListResponse(response));
            }
        }
Exemple #3
0
 private HttpResponse <GastoResponse> newHttpResponse(GastoResponse response)
 {
     return(new HttpResponse <GastoResponse>()
     {
         StatusCode = HttpStatusCode.OK,
         ApiResponse = new ApiResponse <GastoResponse>()
         {
             Data = response,
             Error = null
         }
     });
 }
Exemple #4
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 <LoginResponse> Login(string username, string password)
        {
            var encryptionManager = new EncryptionManager();
            var pass = encryptionManager.Encryptdata(password);

            using (var db = new GeviApiContext())
            {
                var user = db.Usuarios
                           .Where(u => u.Email.Equals(username) && u.Contrasenia.Equals(pass))
                           .FirstOrDefault();

                if (user != null)
                {
                    #region cargarListas
                    var clientes = db.Clientes
                                   .Include(c => c.Proyectos)
                                   .Include(c => c.Tipo)
                                   .ToList();


                    var tipoClientes = db.TipoClientes.ToList();
                    var monedas      = db.Monedas.ToList();
                    var tipoGastos   = db.TipoGastos.ToList();

                    var clientesResponse     = new List <ClienteResponse>();
                    var tipoClientesResponse = new List <TipoResponse>();
                    var tipoGastosResponse   = new List <TipoResponse>();

                    foreach (var c in clientes)
                    {
                        var nuevoCliente = new ClienteResponse()
                        {
                            Id        = c.Id,
                            Nombre    = c.Nombre,
                            Proyectos = null, // lo devuelvo null porque no me interesa devolver los proyectos
                            Tipo      = c.Tipo
                        };

                        clientesResponse.Add(nuevoCliente);
                    }

                    foreach (var tc in tipoClientes)
                    {
                        var nuevoTipoCliente = new TipoResponse()
                        {
                            TipoNombre = tc.Nombre
                        };

                        tipoClientesResponse.Add(nuevoTipoCliente);
                    }

                    foreach (var tg in tipoGastos)
                    {
                        var nuevoTipoGasto = new TipoResponse()
                        {
                            TipoNombre = tg.Nombre
                        };

                        tipoGastosResponse.Add(nuevoTipoGasto);
                    }
                    #endregion

                    if (user is Empleado)
                    {
                        Empleado usuario = user as Empleado;

                        var viajes = db.Viajes
                                     .Where(v => v.Empleado.Id == usuario.Id)
                                     .Where(v => v.Estado == Estado.APROBADO)
                                     .Include(v => v.Empleado)
                                     .Include(v => v.Gastos)
                                     .Include(v => v.Proyecto)
                                     .ToList();

                        var response = new List <ViajeResponse>();

                        #region traerViajesDelEmpleado
                        if (viajes != null)
                        {
                            foreach (var v in viajes)
                            {
                                var nuevo = new ViajeResponse()
                                {
                                    Id          = v.Id,
                                    EmpleadoId  = usuario.Id,
                                    Estado      = v.Estado,
                                    FechaFin    = v.FechaFin,
                                    FechaInicio = v.FechaInicio,
                                    Gastos      = null,
                                    Proyecto    = v.Proyecto?.Nombre
                                };

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

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

                                        gastosRespone.Add(nuevoGastoResponse);
                                    }

                                    nuevo.Gastos = gastosRespone;
                                }

                                response.Add(nuevo);
                            }
                        }
                        #endregion

                        return(newHttpResponse(new LoginResponse()
                        {
                            Id = user.Id,
                            Email = user.Email,
                            FechaRegistro = user.FechaRegistro,
                            Nombre = user.Nombre,
                            Clientes = clientesResponse,
                            Monedas = monedas,
                            TipoClientes = tipoClientesResponse,
                            TipoGastos = tipoGastosResponse,
                            EsEmpleado = user is Empleado,
                            ViajesAprobados = response
                        }));
                    }

                    if (user is Administrativo)
                    {
                        var empleados = db.Usuarios
                                        .OfType <Empleado>()
                                        .ToList();

                        return(newHttpResponse(new LoginResponse()
                        {
                            Id = user.Id,
                            Email = user.Email,
                            FechaRegistro = user.FechaRegistro,
                            Nombre = user.Nombre,
                            Clientes = clientesResponse,
                            Monedas = monedas,
                            TipoClientes = tipoClientesResponse,
                            TipoGastos = tipoGastosResponse,
                            EsEmpleado = user is Empleado,
                            Empleados = empleados
                        }));
                    }

                    return(newHttpResponse(new LoginResponse()
                    {
                        Id = user.Id,
                        Email = user.Email,
                        FechaRegistro = user.FechaRegistro,
                        Nombre = user.Nombre,
                        Clientes = clientesResponse,
                        Monedas = monedas,
                        TipoClientes = tipoClientesResponse,
                        TipoGastos = tipoGastosResponse,
                        EsEmpleado = user is Empleado
                    }));
                }
                else
                {
                    return(newHttpErrorResponse(new Error("Login invalido. Verifique las credenciales.")));
                }
            }
        }
        public HttpResponse <List <ViajeResponse> > EntreFechas(ListadoViajesRequest request)
        {
            using (var db = new GeviApiContext())
            {
                var viajes = db.Viajes
                             .Where(v => (!request.FechaInicio.Equals(DateTime.MinValue) ? v.FechaInicio >= request.FechaInicio : true) &&
                                    (!request.FechaFin.Equals(DateTime.MinValue) ? v.FechaFin <= request.FechaFin : true) &&
                                    (!String.IsNullOrEmpty(request.ClienteNombre) && (v.Proyecto != null) && (v.Proyecto.Cliente != null) ? v.Proyecto.Cliente.Nombre.Equals(request.ClienteNombre) : true))
                             .Include(v => v.Empleado)
                             .Include(v => v.Gastos.Select(g => g.Tipo))
                             .Include(v => v.Gastos.Select(g => g.Moneda))
                             .Include(v => v.Proyecto.Cliente)
                             .ToList();

                var response = new List <ViajeResponse>();

                foreach (var v in viajes)
                {
                    var nuevo = new ViajeResponse()
                    {
                        Id                    = v.Id,
                        EmpleadoId            = v.Empleado.Id,
                        Estado                = v.Estado,
                        FechaFin              = v.FechaFin,
                        FechaInicio           = v.FechaInicio,
                        Gastos                = null,
                        Proyecto              = v.Proyecto?.Nombre,
                        ClienteProyectoNombre = v.Proyecto?.Cliente?.Nombre,
                        EmpleadoNombre        = v.Empleado.Nombre
                    };

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

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

                            gastosRespone.Add(nuevoGastoResponse);
                        }

                        nuevo.Gastos = gastosRespone;
                    }

                    response.Add(nuevo);
                }

                return(newHttpListResponse(response));
            }
        }
        public HttpResponse <List <ViajeResponse> > Historial(ViajeRequest request)
        {
            using (var db = new GeviApiContext())
            {
                var empleado = db.Usuarios
                               .OfType <Empleado>()
                               .Where(u => u is Empleado && u.Id == request.EmpleadoId)
                               .Include(u => u.Viajes.Select(v => v.Proyecto.Cliente))
                               .Include(u => u.Viajes.Select(v => v.Gastos.Select(g => g.Tipo)))
                               .Include(u => u.Viajes.Select(v => v.Gastos.Select(g => g.Moneda)))
                               .FirstOrDefault();

                if (empleado != null)
                {
                    var viajes = empleado?.Viajes;

                    var response = new List <ViajeResponse>();

                    if (viajes != null)
                    {
                        foreach (var v in viajes)
                        {
                            var nuevo = new ViajeResponse()
                            {
                                Id                    = v.Id,
                                EmpleadoId            = request.EmpleadoId,
                                Estado                = v.Estado,
                                FechaFin              = v.FechaFin,
                                FechaInicio           = v.FechaInicio,
                                Gastos                = null,
                                Proyecto              = v.Proyecto?.Nombre,
                                ClienteProyectoNombre = v.Proyecto.Cliente.Nombre,
                                EmpleadoNombre        = empleado.Nombre
                            };

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

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

                                    gastosRespone.Add(nuevoGastoResponse);
                                }

                                nuevo.Gastos = gastosRespone;
                            }

                            response.Add(nuevo);
                        }
                    }
                    return(newHttpListResponse(response));
                }

                return(newHttpErrorListResponse(new Error("No existe el empleado")));
            }
        }
        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")));
            }
        }
Exemple #9
0
        public HttpResponse <GastoResponse> NuevoGasto(GastoRequest request)
        {
            if (request == null)
            {
                return(newHttpErrorResponse(new Error("El gasto que se intenta ingresar es invalido.")));
            }

            using (var db = new GeviApiContext())
            {
                var empleado = db.Usuarios
                               .OfType <Empleado>()
                               .Where(u => u is Empleado && u.Id == request.EmpleadoId)
                               .Include(u => u.Viajes)
                               .FirstOrDefault();
                if (empleado != null)
                {
                    var viaje = db.Viajes
                                .Where(v => v.Id == request.ViajeId)
                                .Include(v => v.Proyecto)
                                .Include(v => v.Gastos)
                                .Include(v => v.Empleado)
                                .FirstOrDefault();
                    if (viaje != null &&
                        request.Fecha >= viaje.FechaInicio &&
                        request.Fecha <= viaje.FechaFin)
                    {
                        var tipo = db.TipoGastos
                                   .Where(t => t.Nombre.Equals(request.Tipo))
                                   .FirstOrDefault();

                        var moneda = db.Monedas
                                     .Where(m => m.Nombre.Equals(request.MonedaNombre))
                                     .FirstOrDefault();

                        var nuevo = new Gasto()
                        {
                            Estado   = request.Estado,
                            Fecha    = request.Fecha,
                            Moneda   = moneda,
                            Tipo     = tipo,
                            Empleado = empleado,
                            Viaje    = viaje,
                            Total    = request.Total
                        };

                        try
                        {
                            db.Gastos.Add(nuevo);
                            db.SaveChanges();
                        }
                        catch (DbUpdateException)
                        {
                            return(newHttpErrorResponse(new Error("Error al ingresar nuevo gasto.")));
                        }

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

                        return(newHttpResponse(response));
                    }
                    else
                    {
                        if (viaje == null)
                        {
                            return(newHttpErrorResponse(new Error("El viaje no existe")));
                        }
                        else
                        {
                            return(newHttpErrorResponse(new Error("La fecha del gasto debe pertenecer al viaje")));
                        }
                    }
                }

                return(newHttpErrorResponse(new Error("El empleado no existe")));
            }
        }