예제 #1
0
파일: Usuario.cs 프로젝트: Ocumian/AEOnline
        public static void CrearUsuario(ProyectoAutoContext _db, string _nombre, string _email, string _password, RolUsuario _rol, int _idFlota)
        {
            string  passEncriptada = PasswordHash.CreateHash(_password.Trim());
            Usuario nuevoUser      = new Usuario()
            {
                Nombre   = _nombre,
                Email    = _email,
                Password = passEncriptada,
                Rol      = _rol
            };

            _db.Usuarios.Add(nuevoUser);

            int idFlota = _idFlota;

            if (idFlota != 0)
            {
                Flota        flotaAsignar = _db.Flotas.Where(f => f.Id == idFlota).FirstOrDefault();
                UsuarioFlota uf           = new UsuarioFlota()
                {
                    Usuario = nuevoUser,
                    Flota   = flotaAsignar
                };
                _db.UsuarioFlotas.Add(uf);
                _db.SaveChanges();

                flotaAsignar.UsuarioFlota = uf;
                nuevoUser.UsuarioFlota    = uf;
            }


            _db.SaveChanges();
        }
예제 #2
0
        public static void CrearOperador(ProyectoAutoContext _db, int _idFlota,
                                         string _nombre, string _tipoLicencia, int _idUsuario, int _idAuto)
        {
            Flota flota = _db.Flotas.Where(f => f.Id == _idFlota).FirstOrDefault();

            Auto    auto = flota.Autos.Where(a => a.Id == _idAuto).FirstOrDefault();
            Usuario user = _db.Usuarios.Where(u => u.Id == _idUsuario).FirstOrDefault();

            Operador nuevoOperador = new Operador();

            nuevoOperador.Nombre       = _nombre;
            nuevoOperador.TipoLicencia = _tipoLicencia;
            flota.Operadores.Add(nuevoOperador);

            _db.SaveChanges();

            if (auto != null)
            {
                //nuevoOperador.Auto = auto;
                nuevoOperador.Autos = new List <Auto>();
                nuevoOperador.Autos.Add(auto);

                auto.Operador = nuevoOperador;
            }

            if (user != null)
            {
                nuevoOperador.Usuario = user;
                user.Operador         = nuevoOperador;
            }
            _db.SaveChanges();
        }
예제 #3
0
파일: Flota.cs 프로젝트: Ocumian/AEOnline
        public static void EditarFlota(ProyectoAutoContext _db, int _idOriginal, string _nombreNuevo, int _idAdminNuevo, int _idPackServicio)
        {
            Flota   flotaOriginal = _db.Flotas.Where(f => f.Id == _idOriginal).FirstOrDefault();
            Usuario nuevoAdmin    = _db.Usuarios.Where(u => u.Id == _idAdminNuevo).FirstOrDefault();

            int idAdminOriginal = 0;

            if (flotaOriginal.UsuarioFlotaId != null)
            {
                idAdminOriginal = flotaOriginal.UsuarioFlota.Usuario.Id;
            }
            int idPackOriginal = 0;

            if (flotaOriginal.PackId != null)
            {
                idPackOriginal = flotaOriginal.PackServicio.Id;
            }


            if (_idAdminNuevo != idAdminOriginal)
            {
                // Si tiene una relacion anterior Desaparece
                if (flotaOriginal.UsuarioFlotaId != null)
                {
                    flotaOriginal.UsuarioFlota.Usuario.UsuarioFlota = null;
                    _db.UsuarioFlotas.Remove(flotaOriginal.UsuarioFlota);
                }

                //Si se selecciono algo diferente a "Sin Asignar", hay que hacer la nueva relacion
                if (_idAdminNuevo != 0)
                {
                    UsuarioFlota uf = new UsuarioFlota()
                    {
                        Usuario = nuevoAdmin,
                        Flota   = flotaOriginal
                    };
                    _db.UsuarioFlotas.Add(uf);
                    _db.SaveChanges();
                    nuevoAdmin.UsuarioFlota    = uf;
                    flotaOriginal.UsuarioFlota = uf;
                }
            }

            if (_idPackServicio != idPackOriginal)
            {
                PackServicio pack = _db.PackServicios.Where(p => p.Id == _idPackServicio).FirstOrDefault();
                flotaOriginal.PackServicio = pack;
            }

            flotaOriginal.Nombre = _nombreNuevo;

            _db.SaveChanges();
        }
예제 #4
0
파일: Flota.cs 프로젝트: Ocumian/AEOnline
        public static Flota CrearFlota(ProyectoAutoContext _db, string _nombre, int _idAdmin, string _nombrePackInicial)
        {
            Flota nuevaFlota = new Flota();

            nuevaFlota.Nombre        = _nombre;
            nuevaFlota.Servicios     = new List <Servicio>();
            nuevaFlota.TiposVehiculo = new List <TipoVehiculo>();

            _db.Flotas.Add(nuevaFlota);

            if (_idAdmin != 0)
            {
                Usuario      admin = _db.Usuarios.Where(u => u.Id == _idAdmin).FirstOrDefault();
                UsuarioFlota uf    = new UsuarioFlota()
                {
                    Usuario = admin,
                    Flota   = nuevaFlota
                };
                _db.UsuarioFlotas.Add(uf);
                _db.SaveChanges();
                nuevaFlota.UsuarioFlota = uf;
                admin.UsuarioFlota      = uf;
            }

            PackServicio packInicial = _db.PackServicios.Where(p => p.Nombre == _nombrePackInicial).FirstOrDefault();

            nuevaFlota.PackServicio = packInicial;

            _db.SaveChanges();

            //Creacion de datos default

            List <Servicio>     serviciosDefault     = CrearServiciosDefault();
            List <TipoVehiculo> tiposVehiculoDefault = CrearTiposVehiculoDefault();

            for (int i = 0; i < serviciosDefault.Count; i++)
            {
                nuevaFlota.Servicios.Add(serviciosDefault[i]);
            }

            for (int i = 0; i < tiposVehiculoDefault.Count; i++)
            {
                nuevaFlota.TiposVehiculo.Add(tiposVehiculoDefault[i]);
            }
            _db.SaveChanges();

            return(nuevaFlota);
        }
예제 #5
0
        public static void EditarAuto(ProyectoAutoContext _db, int _idOriginal, string _nombre, string _patente, TipoVehiculo _tipo, string _marca, string _modelo, int _year, int _kilometraje, int _idFlota, int _idNuevoOperador = 0)
        {
            Auto autoOriginal = _db.Autos.Where(a => a.Id == _idOriginal).FirstOrDefault();

            Flota flota = _db.Flotas.Where(f => f.Id == _idFlota).FirstOrDefault();

            #region Cambiar Flota

            if (_idFlota == 0)
            {
                if (autoOriginal.Flota != null)
                {
                    autoOriginal.Flota.Autos.Remove(autoOriginal);
                }
            }
            else if (flota != null)
            {
                autoOriginal.Flota = flota;
            }

            #endregion

            #region CambiarOperador

            if (_idNuevoOperador == 0)
            {
                if (flota != null && autoOriginal.OperadorId != null)
                {
                    autoOriginal.Operador.Autos.Clear();
                }
                // autoOriginal.Operador.Auto = null;

                autoOriginal.Operador = null;
            }
            if (flota != null && _idNuevoOperador != 0)
            {
                if (autoOriginal.OperadorId != null)
                {
                    autoOriginal.Operador.Autos.Clear();
                }
                //autoOriginal.Operador.Auto = null;

                Operador operador = flota.Operadores.Where(o => o.Id == _idNuevoOperador).FirstOrDefault();
                //operador.Auto = autoOriginal;
                operador.Autos.Add(autoOriginal);
                autoOriginal.Operador = operador;
            }

            #endregion

            autoOriginal.Patente           = _patente;
            autoOriginal.NombreVehiculo    = _nombre;
            autoOriginal.Patente           = _patente;
            autoOriginal.TipoVehiculo      = _tipo;
            autoOriginal.Marca             = _marca;
            autoOriginal.Modelo            = _modelo;
            autoOriginal.Year              = _year;
            autoOriginal.KilometrajeActual = _kilometraje;
            _db.SaveChanges();
        }
예제 #6
0
        public static void ElimiarAuto(ProyectoAutoContext _db, int _idAuto)
        {
            Auto auto = _db.Autos.Where(a => a.Id == _idAuto).FirstOrDefault();

            if (auto.OperadorId != null)
            {
                auto.Operador.Autos.Clear();
            }
            //auto.Operador.Auto = null;

            _db.HistorialesCargaCombustible.RemoveRange(auto.CargasCombustible);

            foreach (HistorialMantencion hm in auto.Mantenciones)
            {
                _db.MantencionServicios.RemoveRange(hm.ServiciosAplicados);
            }
            _db.HistorialesMantencion.RemoveRange(auto.Mantenciones);

            foreach (HistorialDiario hd in auto.HistorialesDiarios)
            {
                _db.HistorialesVelocidad.RemoveRange(hd.historialesVelocidad);
                _db.HistorialesPosicion.RemoveRange(hd.historialesPosicion);
            }
            _db.HistorialesDiarios.RemoveRange(auto.HistorialesDiarios);
            _db.Autos.Remove(auto);

            _db.SaveChanges();
        }
예제 #7
0
        public static void EliminarHistorialMantencion(ProyectoAutoContext _db, int _idAuto, int _idHistorialOriginal)
        {
            //editar datos proveedor
            //tambien considerar lo que pasa con las relaciones MantencionServicio al removerlas

            Auto auto = _db.Autos.Where(a => a.Id == _idAuto).FirstOrDefault();
            HistorialMantencion histOriginal = auto.Mantenciones.Where(h => h.Id == _idHistorialOriginal).FirstOrDefault();

            auto.CostoTotalMantenimiento -= histOriginal.Costo;

            #region Actualizar viejo y nuevo Proveedor

            Proveedor provAnterior = histOriginal.Proveedor;

            if (provAnterior != null)
            {
                provAnterior.GastoTotalMantenimiento -= histOriginal.Costo;
            }
            #endregion

            _db.MantencionServicios.RemoveRange(histOriginal.ServiciosAplicados);

            _db.HistorialesMantencion.Remove(histOriginal);
            _db.SaveChanges();
        }
예제 #8
0
        public static void EliminarProveedor(ProyectoAutoContext _db, int _idFlota, int _idProveedor)
        {
            Flota     flota     = _db.Flotas.Where(f => f.Id == _idFlota).FirstOrDefault();
            Proveedor proveedor = flota.Proveedores.Where(p => p.Id == _idProveedor).FirstOrDefault();


            foreach (Auto auto in flota.Autos)
            {
                foreach (HistorialMantencion hm in auto.Mantenciones)
                {
                    if (hm.Proveedor == proveedor)
                    {
                        hm.Proveedor = null;
                    }
                }

                foreach (HistorialCargaCombustible hcc in auto.CargasCombustible)
                {
                    if (hcc.Proveedor == proveedor)
                    {
                        hcc.Proveedor = null;
                    }
                }
            }
            _db.Proveedores.Remove(proveedor);
            _db.SaveChanges();
        }
예제 #9
0
        public static void CrearAuto(ProyectoAutoContext _db, string _nombre, string _patente, TipoVehiculo _tipo, string _marca, string _modelo, int _year, int _kilometraje, int _idFlota, int _idOperador = 0)
        {
            Auto nuevoAuto = new Auto();

            nuevoAuto.NombreVehiculo    = _nombre;
            nuevoAuto.Patente           = _patente;
            nuevoAuto.TipoVehiculo      = _tipo;
            nuevoAuto.Marca             = _marca;
            nuevoAuto.Modelo            = _modelo;
            nuevoAuto.Year              = _year;
            nuevoAuto.KilometrajeActual = _kilometraje;
            nuevoAuto.Latitud           = 0;
            nuevoAuto.Longitud          = 0;
            _db.Autos.Add(nuevoAuto);


            if (_idFlota != 0)
            {
                Flota flota = _db.Flotas.Where(f => f.Id == _idFlota).FirstOrDefault();
                nuevoAuto.Flota = flota;

                if (_idOperador != 0)
                {
                    Operador operador = flota.Operadores.Where(o => o.Id == _idOperador).FirstOrDefault();
                    nuevoAuto.Operador = operador;
                    //operador.Auto = nuevoAuto;
                    operador.Autos.Add(nuevoAuto);
                }
            }
            _db.SaveChanges();
        }
예제 #10
0
파일: Usuario.cs 프로젝트: Ocumian/AEOnline
        public static void EliminarUsuario(ProyectoAutoContext _db, int _idUser)
        {
            Usuario user = _db.Usuarios.Where(u => u.Id == _idUser).FirstOrDefault();

            if (user.OperadorId != null)
            {
                user.Operador.Usuario = null;
            }

            if (user.UsuarioFlotaId != null)
            {
                user.UsuarioFlota.Flota.UsuarioFlota = null;
                _db.UsuarioFlotas.Remove(user.UsuarioFlota);
                _db.SaveChanges();
            }
            _db.Usuarios.Remove(user);
            _db.SaveChanges();
        }
예제 #11
0
파일: Usuario.cs 프로젝트: Ocumian/AEOnline
        public static void EditarPasswordUsuario(ProyectoAutoContext _db, int _idUser, string _nuevaPass)
        {
            Usuario user = _db.Usuarios.Where(u => u.Id == _idUser).FirstOrDefault();

            if (_nuevaPass.Trim() != "")
            {
                string passEncriptada = PasswordHash.CreateHash(_nuevaPass.Trim());
                user.Password = passEncriptada;
                _db.SaveChanges();
            }
        }
예제 #12
0
        public static void CrearServicio(ProyectoAutoContext _db, int _idFlota, string _nombreServicio)
        {
            Flota flota = _db.Flotas.Where(f => f.Id == _idFlota).FirstOrDefault();

            Servicio nuevoServicio = new Servicio();

            nuevoServicio.NombreServicio = _nombreServicio;

            flota.Servicios.Add(nuevoServicio);
            _db.SaveChanges();
        }
예제 #13
0
        public static void CrearTipoVehiculo(ProyectoAutoContext _db, int _idFlota, string _tipo)
        {
            Flota flota = _db.Flotas.Where(f => f.Id == _idFlota).FirstOrDefault();

            TipoVehiculo nuevoTipo = new TipoVehiculo();

            nuevoTipo.Tipo = _tipo;

            flota.TiposVehiculo.Add(nuevoTipo);
            _db.SaveChanges();
        }
예제 #14
0
파일: Flota.cs 프로젝트: Ocumian/AEOnline
        public static void EliminarFlota(ProyectoAutoContext _db, int _idFlota)
        {
            Flota flota = _db.Flotas.Where(f => f.Id == _idFlota).FirstOrDefault();

            List <int> autosEliminables      = new List <int>();
            List <int> operadoresEliminables = new List <int>();

            foreach (Auto a in flota.Autos)
            {
                autosEliminables.Add(a.Id);
            }
            foreach (int aId in autosEliminables)
            {
                Auto.ElimiarAuto(_db, aId);
            }

            foreach (Operador o in flota.Operadores)
            {
                operadoresEliminables.Add(o.Id);
            }
            foreach (int oId in operadoresEliminables)
            {
                Operador.EliminarOperador(_db, oId);
            }

            if (flota.UsuarioFlotaId != null)
            {
                flota.UsuarioFlota.Usuario.UsuarioFlota = null;
                _db.UsuarioFlotas.Remove(flota.UsuarioFlota);
            }

            _db.Proveedores.RemoveRange(flota.Proveedores);
            _db.TiposVehiculo.RemoveRange(flota.TiposVehiculo);
            _db.Servicios.RemoveRange(flota.Servicios);
            _db.Alertas.RemoveRange(flota.Alerttas);
            _db.Recordatorios.RemoveRange(flota.Recordatorios);
            _db.SaveChanges();

            _db.Flotas.Remove(flota);
            _db.SaveChanges();
        }
예제 #15
0
        public static void EditarProveedor(ProyectoAutoContext _db, int _idOriginal,
                                           string _nuevoNombre, string _nuevoTelefono, string _nuevaDireccion, string _nuevaPersonaContacto,
                                           string _nuevoTelefonoContacto, string _nuevoEmailContacto)
        {
            Proveedor proveedor = _db.Proveedores.Where(p => p.Id == _idOriginal).FirstOrDefault();

            proveedor.NombreComercial  = _nuevoNombre;
            proveedor.Telefono         = _nuevoTelefono;
            proveedor.Direccion        = _nuevaDireccion;
            proveedor.PersonaContacto  = _nuevaPersonaContacto;
            proveedor.TelefonoContacto = _nuevoTelefonoContacto;
            proveedor.EmailContacto    = _nuevoEmailContacto;

            _db.SaveChanges();
        }
예제 #16
0
        public static void EliminarTipo(ProyectoAutoContext _db, Flota _flota, TipoVehiculo _tipo)
        {
            List <Auto> autos = _flota.Autos.ToList();

            foreach (Auto a in autos)
            {
                if (a.TipoVehiculo == _tipo)
                {
                    a.TipoVehiculo = null;
                }
            }

            _db.TiposVehiculo.Remove(_tipo);
            _db.SaveChanges();
        }
예제 #17
0
        public static void EditarHistorialMantencion(ProyectoAutoContext _db, int _idAuto, int _idHistorialOriginal,
                                                     DateTime _fecha, List <Servicio> _servicios, int _kilometraje, TipoMantenimiento _tipoMantenimiento,
                                                     int _costo, Proveedor _proveedor)
        {
            //editar datos proveedor
            //tambien considerar lo que pasa con las relaciones MantencionServicio cuando se remueven/reemplazan

            Auto auto = _db.Autos.Where(a => a.Id == _idAuto).FirstOrDefault();
            HistorialMantencion histOriginal = auto.Mantenciones.Where(h => h.Id == _idHistorialOriginal).FirstOrDefault();

            auto.CostoTotalMantenimiento += _costo - histOriginal.Costo;

            #region Actualizar viejo y nuevo Proveedor

            Proveedor provAnterior = histOriginal.Proveedor;
            Proveedor provNuevo    = _proveedor;

            if (provAnterior != null)
            {
                provAnterior.GastoTotalMantenimiento -= histOriginal.Costo;
            }
            if (provNuevo != null)
            {
                provNuevo.GastoTotalMantenimiento += _costo;
            }

            #endregion

            _db.MantencionServicios.RemoveRange(histOriginal.ServiciosAplicados);
            for (int i = 0; i < _servicios.Count; i++)
            {
                MantencionServicio nuevoMantencionServ = new MantencionServicio();
                nuevoMantencionServ.HistorialMantencion = histOriginal;
                nuevoMantencionServ.Servicio            = _servicios[i];

                histOriginal.ServiciosAplicados.Add(nuevoMantencionServ);
            }

            histOriginal.Fecha               = _fecha;
            histOriginal.Kilometraje         = _kilometraje;
            histOriginal.TipoDeMantenimiento = _tipoMantenimiento;
            histOriginal.Costo               = _costo;
            histOriginal.Proveedor           = _proveedor;

            _db.SaveChanges();
        }
예제 #18
0
        public static void NuevoRegistroDeServicio(ProyectoAutoContext _db, int _idAuto, DateTime _fecha,
                                                   List <Servicio> _servicios, int _kilometraje, TipoMantenimiento _tipoMantenimiento,
                                                   int _costo, Proveedor _proveedor)
        {
            Auto auto = _db.Autos.Where(a => a.Id == _idAuto).FirstOrDefault();

            auto.CostoTotalMantenimiento += _costo;

            if (_proveedor != null)
            {
                _proveedor.GastoTotalMantenimiento += _costo;
            }

            Operador operador = null;

            if (auto.OperadorId != null)
            {
                operador = auto.Operador;
            }

            HistorialMantencion nuevaMantencion = new HistorialMantencion();

            nuevaMantencion.Fecha               = _fecha;
            nuevaMantencion.Kilometraje         = _kilometraje;
            nuevaMantencion.TipoDeMantenimiento = _tipoMantenimiento;
            nuevaMantencion.Costo               = _costo;
            nuevaMantencion.Proveedor           = _proveedor;
            nuevaMantencion.ServiciosAplicados  = new List <MantencionServicio>();
            nuevaMantencion.Operador            = operador;

            for (int i = 0; i < _servicios.Count; i++)
            {
                MantencionServicio nuevoMantencionServ = new MantencionServicio();
                nuevoMantencionServ.HistorialMantencion = nuevaMantencion;
                nuevoMantencionServ.Servicio            = _servicios[i];

                nuevaMantencion.ServiciosAplicados.Add(nuevoMantencionServ);
            }

            auto.Mantenciones.Add(nuevaMantencion);
            _db.SaveChanges();
        }
예제 #19
0
        public static void CrearProveedor(ProyectoAutoContext _db, int _idFlota,
                                          string _nombreComercial, string _telefono, string _direccion, string _personaContacto,
                                          string _telefonoContacto, string _emailContacto)
        {
            Flota flota = _db.Flotas.Where(f => f.Id == _idFlota).FirstOrDefault();

            Proveedor nuevoProveedor = new Proveedor();

            nuevoProveedor.NombreComercial         = _nombreComercial;
            nuevoProveedor.Telefono                = _telefono;
            nuevoProveedor.Direccion               = _direccion;
            nuevoProveedor.PersonaContacto         = _personaContacto;
            nuevoProveedor.TelefonoContacto        = _telefonoContacto;
            nuevoProveedor.EmailContacto           = _emailContacto;
            nuevoProveedor.GastoTotalCombustible   = 0;
            nuevoProveedor.GastoTotalMantenimiento = 0;

            flota.Proveedores.Add(nuevoProveedor);
            _db.SaveChanges();
        }
예제 #20
0
        public static void EliminarOperador(ProyectoAutoContext _db, int _idOperador)
        {
            Operador operador = _db.Operadores.Where(o => o.Id == _idOperador).FirstOrDefault();

            if (operador.Autos.Count > 0)
            {
                operador.Autos.First().Operador = null;
                operador.Autos.Clear();
            }
            //if (operador.Auto != null)
            //    operador.Auto.Operador = null;
            if (operador.Usuario != null)
            {
                operador.Usuario.Operador = null;
            }



            _db.Operadores.Remove(operador);
            _db.SaveChanges();
        }
예제 #21
0
        public static void EliminarServicio(ProyectoAutoContext _db, int _idFlota, int _idServicio)
        {
            Flota    flota = _db.Flotas.Where(f => f.Id == _idFlota).FirstOrDefault();
            Servicio serv  = flota.Servicios.Where(s => s.Id == _idServicio).FirstOrDefault();

            List <MantencionServicio> ManSerEliminables = new List <MantencionServicio>();

            foreach (Auto a in flota.Autos)
            {
                foreach (HistorialMantencion hm in a.Mantenciones)
                {
                    foreach (MantencionServicio ms in hm.ServiciosAplicados)
                    {
                        if (ms.ServicioId == _idServicio)
                        {
                            ManSerEliminables.Add(ms);
                        }
                    }
                }
            }
            _db.MantencionServicios.RemoveRange(ManSerEliminables);
            _db.Servicios.Remove(serv);
            _db.SaveChanges();
        }
예제 #22
0
        public static void EliminarCargaCombustible(ProyectoAutoContext _db, int _idAuto, int _idCargaOriginal)
        {
            //Actualizar historial general auto, proveedor y carga siguiente

            Auto auto = _db.Autos.Where(a => a.Id == _idAuto).FirstOrDefault();
            HistorialCargaCombustible        cargaOriginal = auto.CargasCombustible.Where(hcc => hcc.Id == _idCargaOriginal).FirstOrDefault();
            List <HistorialCargaCombustible> otrasCargas   = auto.CargasCombustible.OrderBy(h => h.FechaHora).ToList();

            HistorialCargaCombustible cargaAnterior  = null;
            HistorialCargaCombustible cargaSiguiente = null;

            for (int i = 0; i < otrasCargas.Count; i++)
            {
                if (otrasCargas[i].Id == cargaOriginal.Id)
                {
                    if ((i + 1) < otrasCargas.Count)
                    {
                        cargaSiguiente = otrasCargas[i + 1];
                    }
                    if ((i - 1) >= 0)
                    {
                        cargaAnterior = otrasCargas[i - 1];
                    }
                }
            }

            auto.LitrosTotalesConsumidos = auto.LitrosTotalesConsumidos - cargaOriginal.CantidadLitros;
            auto.CostoTotalCombustible   = auto.CostoTotalCombustible - cargaOriginal.CostoTotal;

            #region Actualizar proveedor

            if (cargaOriginal.Proveedor != null)
            {
                cargaOriginal.Proveedor.GastoTotalCombustible -= cargaOriginal.CostoTotal;
            }

            #endregion

            #region Actualizar Carga siguiente
            if (cargaSiguiente != null)
            {
                if (cargaAnterior == null)
                {
                    cargaSiguiente.KilometrosRecorridos = -1;
                    cargaSiguiente.CostoPorKilometro    = -1;
                    cargaSiguiente.Rendimiento          = -1;
                }
                else
                {
                    float kilometrosRecorridos = cargaSiguiente.Kilometraje - cargaAnterior.Kilometraje;
                    float costoPorKilometro    = cargaAnterior.CostoTotal / kilometrosRecorridos;
                    float rendimiento          = kilometrosRecorridos / cargaAnterior.CantidadLitros;

                    cargaSiguiente.KilometrosRecorridos = kilometrosRecorridos;
                    cargaSiguiente.CostoPorKilometro    = costoPorKilometro;
                    cargaSiguiente.Rendimiento          = rendimiento;
                }
            }
            #endregion

            auto.CargasCombustible.Remove(cargaOriginal);
            _db.SaveChanges();

            //Actulaizar auto luego de ser eliminado el historial
            #region Actualizar datos del auto

            if (otrasCargas.Count > 1)
            {
                int primerKilometraje   = otrasCargas.First().Kilometraje;
                int ultimoKilometraje   = otrasCargas.Last().Kilometraje;
                int kilometrosRecorrido = ultimoKilometraje - primerKilometraje;

                auto.RendimientoPromedio    = kilometrosRecorrido / auto.LitrosTotalesConsumidos;        //Kilometros por litro
                auto.CostoKilometroPromedio = auto.CostoTotalCombustible / kilometrosRecorrido;          //Costo por kilometro
                auto.CostoLitroPromedio     = auto.CostoTotalCombustible / auto.LitrosTotalesConsumidos; //Costo por litro
            }

            auto.KilometrajeActual = otrasCargas.Last().Kilometraje;
            #endregion

            _db.SaveChanges();
        }
예제 #23
0
        public static void EditarOperador(ProyectoAutoContext _db, int _idFlota, int _idOriginal,
                                          string _nuevoNombre, string _tipoLicencia, int _idNuevoUsuario, int _idNuevoAuto)
        {
            Flota    flota    = _db.Flotas.Where(f => f.Id == _idFlota).FirstOrDefault();
            Operador operador = flota.Operadores.Where(o => o.Id == _idOriginal).FirstOrDefault();

            operador.Nombre       = _nuevoNombre;
            operador.TipoLicencia = _tipoLicencia;

            if (_idNuevoAuto == 0)
            {
                //if(operador.Auto != null)
                //{
                //    operador.Auto.Operador = null;
                //    operador.Auto = null;
                //}

                if (operador.Autos.Count > 0)
                {
                    operador.Autos.First().Operador = null;
                    operador.Autos.Clear();
                }
            }
            else
            {
                //if (operador.Auto != null)
                //    operador.Auto.Operador = null;

                //Auto autoNuevo = flota.Autos.Where(a => a.Id == _idNuevoAuto).FirstOrDefault();
                //operador.Auto = autoNuevo;
                //autoNuevo.Operador = operador;

                if (operador.Autos.Count > 0)
                {
                    operador.Autos.First().Operador = null;
                    operador.Autos.Clear();
                }

                Auto autoNuevo = flota.Autos.Where(a => a.Id == _idNuevoAuto).FirstOrDefault();
                operador.Autos.Add(autoNuevo);
                autoNuevo.Operador = operador;
            }


            if (_idNuevoUsuario == 0)
            {
                if (operador.Usuario != null)
                {
                    operador.Usuario.Operador = null;
                    operador.Usuario          = null;
                }
            }
            else
            {
                if (operador.Usuario != null)
                {
                    operador.Usuario.Operador = null;
                }

                Usuario nuevoUser = _db.Usuarios.Where(u => u.Id == _idNuevoUsuario).FirstOrDefault();
                operador.Usuario   = nuevoUser;
                nuevoUser.Operador = operador;
            }

            _db.SaveChanges();
        }
예제 #24
0
파일: Usuario.cs 프로젝트: Ocumian/AEOnline
        public static void EditarUsuario(ProyectoAutoContext _db, int _idOriginal, string _nuevoNombre, string _nuevoEmail, RolUsuario _nuevoRol, int _nuevaFlotaId)
        {
            Usuario userOriginal = _db.Usuarios.Where(u => u.Id == _idOriginal).FirstOrDefault();

            //Dependiendo del rol, primero se remueven las relaciones que se tenian como el rol anterior
            if (_nuevoRol == RolUsuario.Normal)
            {
                if (userOriginal.UsuarioFlotaId != null)
                {
                    userOriginal.UsuarioFlota.Flota.UsuarioFlota = null;
                    _db.UsuarioFlotas.Remove(userOriginal.UsuarioFlota);
                }
            }
            else if (_nuevoRol == RolUsuario.AdminDeFlota)
            {
                if (userOriginal.OperadorId != null)
                {
                    userOriginal.Operador.Usuario = null;
                }

                int idFlotaOriginal = 0;
                if (userOriginal.UsuarioFlotaId != null)
                {
                    idFlotaOriginal = userOriginal.UsuarioFlota.Flota.Id;
                }


                if (_nuevaFlotaId != idFlotaOriginal)
                {
                    if (userOriginal.UsuarioFlotaId != null)
                    {
                        userOriginal.UsuarioFlota.Flota.UsuarioFlota = null;
                        _db.UsuarioFlotas.Remove(userOriginal.UsuarioFlota);
                    }


                    if (_nuevaFlotaId != 0)
                    {
                        Flota flotaBuscada = _db.Flotas.Where(f => f.Id == _nuevaFlotaId).FirstOrDefault();

                        UsuarioFlota uf = new UsuarioFlota()
                        {
                            Usuario = userOriginal,
                            Flota   = flotaBuscada
                        };

                        _db.UsuarioFlotas.Add(uf);
                        _db.SaveChanges();
                        userOriginal.UsuarioFlota = uf;
                        flotaBuscada.UsuarioFlota = uf;
                    }
                }
            }
            else
            {
                if (userOriginal.OperadorId != null)
                {
                    userOriginal.Operador.Usuario = null;
                }


                if (userOriginal.UsuarioFlotaId != null)
                {
                    userOriginal.UsuarioFlota.Flota.UsuarioFlota = null;
                    _db.UsuarioFlotas.Remove(userOriginal.UsuarioFlota);
                }
            }


            userOriginal.Nombre = _nuevoNombre;
            userOriginal.Email  = _nuevoEmail;
            userOriginal.Rol    = _nuevoRol;

            _db.SaveChanges();
        }
예제 #25
0
        public static void EditarCargaCombustible(ProyectoAutoContext _db, int _idAuto, int _idCargaOriginal,
                                                  DateTime _fecha, DateTime _hora, bool _estanqueLleno,
                                                  float _cantidadLitros, int _costoUnitario, int _Kilometraje, Proveedor _proveedor,
                                                  string _rut, int _nBoleta)
        {
            //considerar edicion de historial general del auto y el proveedor
            // editar tambien kilometros recorridos, costo por kilometro, rendimiento DE ESTE Y EL SIGUIENTE HISTORIAL


            Auto auto = _db.Autos.Where(a => a.Id == _idAuto).FirstOrDefault();
            HistorialCargaCombustible        cargaOriginal = auto.CargasCombustible.Where(hcc => hcc.Id == _idCargaOriginal).FirstOrDefault();
            List <HistorialCargaCombustible> otrasCargas   = auto.CargasCombustible.OrderBy(h => h.FechaHora).ToList();
            int costoTotal = Convert.ToInt32(_costoUnitario * _cantidadLitros);

            HistorialCargaCombustible cargaAnterior  = null;
            HistorialCargaCombustible cargaSiguiente = null;

            for (int i = 0; i < otrasCargas.Count; i++)
            {
                if (otrasCargas[i].Id == cargaOriginal.Id)
                {
                    if ((i + 1) < otrasCargas.Count)
                    {
                        cargaSiguiente = otrasCargas[i + 1];
                    }
                    if ((i - 1) >= 0)
                    {
                        cargaAnterior = otrasCargas[i - 1];
                    }
                }
            }

            //Datos de auto que deberian cambiar de inmediato
            auto.LitrosTotalesConsumidos += _cantidadLitros - cargaOriginal.CantidadLitros;
            auto.CostoTotalCombustible   += costoTotal - cargaOriginal.CostoTotal;

            #region Actualizar viejo y nuevo Proveedor
            Proveedor provAnterior = cargaOriginal.Proveedor;
            Proveedor provNuevo    = _proveedor;

            if (provAnterior != null)
            {
                provAnterior.GastoTotalCombustible -= cargaOriginal.CostoTotal;
            }
            if (provNuevo != null)
            {
                provNuevo.GastoTotalCombustible += costoTotal;
            }

            #endregion

            #region Actualizar Datos de la carga original
            float kilometrosRecorridos = -1;
            float costoPorKilometro    = -1;
            float rendimiento          = -1;

            if (cargaAnterior != null)
            {
                kilometrosRecorridos = _Kilometraje - cargaAnterior.Kilometraje;
                costoPorKilometro    = cargaAnterior.CostoTotal / kilometrosRecorridos;
                rendimiento          = kilometrosRecorridos / cargaAnterior.CantidadLitros;
            }

            DateTime fecha = new DateTime(_fecha.Year, _fecha.Month, _fecha.Day, _hora.Hour, _hora.Minute, _hora.Second);
            cargaOriginal.FechaHora      = fecha;
            cargaOriginal.EstanqueLleno  = _estanqueLleno;
            cargaOriginal.CantidadLitros = _cantidadLitros;
            cargaOriginal.CostoUnitario  = _costoUnitario;
            cargaOriginal.Kilometraje    = _Kilometraje;
            cargaOriginal.CostoTotal     = costoTotal;
            cargaOriginal.Proveedor      = _proveedor;
            cargaOriginal.RutEstacion    = _rut;
            cargaOriginal.NumeroDeBoleta = _nBoleta;

            cargaOriginal.KilometrosRecorridos = kilometrosRecorridos;
            cargaOriginal.CostoPorKilometro    = costoPorKilometro;
            cargaOriginal.Rendimiento          = rendimiento;

            _db.SaveChanges();
            #endregion

            #region Actualizar Datos de la siguiente carga

            if (cargaSiguiente != null)
            {
                kilometrosRecorridos = cargaSiguiente.Kilometraje - cargaOriginal.Kilometraje;
                costoPorKilometro    = cargaOriginal.CostoTotal / kilometrosRecorridos;
                rendimiento          = kilometrosRecorridos / cargaOriginal.CantidadLitros;

                cargaSiguiente.KilometrosRecorridos = kilometrosRecorridos;
                cargaSiguiente.CostoPorKilometro    = costoPorKilometro;
                cargaSiguiente.Rendimiento          = rendimiento;
            }

            #endregion

            //datos del auto se actualizan al final cuando los hitoriales ya se regulan
            #region Actualizar datos del auto

            if (otrasCargas.Count > 1)
            {
                int primerKilometraje   = otrasCargas.First().Kilometraje;
                int ultimoKilometraje   = otrasCargas.Last().Kilometraje;
                int kilometrosRecorrido = ultimoKilometraje - primerKilometraje;

                auto.RendimientoPromedio    = kilometrosRecorrido / auto.LitrosTotalesConsumidos;        //Kilometros por litro
                auto.CostoKilometroPromedio = auto.CostoTotalCombustible / kilometrosRecorrido;          //Costo por kilometro
                auto.CostoLitroPromedio     = auto.CostoTotalCombustible / auto.LitrosTotalesConsumidos; //Costo por litro
            }

            auto.KilometrajeActual = otrasCargas.Last().Kilometraje;
            #endregion

            _db.SaveChanges();
        }
예제 #26
0
        }                                      //Kilometros por litro


        public static void NuevaCargaCombustible(ProyectoAutoContext _db, int _idAuto,
                                                 DateTime _fecha, DateTime _hora, bool _estanqueLleno,
                                                 float _cantidadLitros, int _costoUnitario, int _Kilometraje, Proveedor _proveedor,
                                                 string _rut, int _nBoleta)
        {
            Auto auto = _db.Autos.Where(a => a.Id == _idAuto).FirstOrDefault();
            List <HistorialCargaCombustible> otrasCargas = auto.CargasCombustible.OrderBy(h => h.FechaHora).ToList();
            int costoTotal = Convert.ToInt32(_costoUnitario * _cantidadLitros);

            #region Actualizar datos del auto


            if (otrasCargas.Count > 0)
            {
                int primerKilometraje   = otrasCargas.First().Kilometraje;
                int ultimoKilometraje   = _Kilometraje;
                int kilometrosRecorrido = ultimoKilometraje - primerKilometraje;

                auto.RendimientoPromedio    = kilometrosRecorrido / auto.LitrosTotalesConsumidos;        //Kilometros por litro
                auto.CostoKilometroPromedio = auto.CostoTotalCombustible / kilometrosRecorrido;          //Costo por kilometro
                auto.CostoLitroPromedio     = auto.CostoTotalCombustible / auto.LitrosTotalesConsumidos; //Costo por litro
            }

            auto.KilometrajeActual        = _Kilometraje;
            auto.LitrosTotalesConsumidos += _cantidadLitros;
            auto.CostoTotalCombustible   += costoTotal;
            #endregion

            #region Actualizar Proveedor
            if (_proveedor != null)
            {
                _proveedor.GastoTotalCombustible += costoTotal;
            }
            #endregion

            float kilometrosRecorridos = -1;
            float costoPorKilometro    = -1;
            float rendimiento          = -1;

            Operador operador = null;
            if (auto.OperadorId != null)
            {
                operador = auto.Operador;
            }


            if (otrasCargas.Count > 0)
            {
                HistorialCargaCombustible ultimaCarga = otrasCargas.Last();

                kilometrosRecorridos = _Kilometraje - ultimaCarga.Kilometraje;
                costoPorKilometro    = ultimaCarga.CostoTotal / kilometrosRecorridos;
                rendimiento          = kilometrosRecorridos / ultimaCarga.CantidadLitros;
            }

            DateTime fecha = new DateTime(_fecha.Year, _fecha.Month, _fecha.Day, _hora.Hour, _hora.Minute, _hora.Second);

            HistorialCargaCombustible nuevaCarga = new HistorialCargaCombustible();
            nuevaCarga.FechaHora      = fecha;
            nuevaCarga.EstanqueLleno  = _estanqueLleno;
            nuevaCarga.CantidadLitros = _cantidadLitros;
            nuevaCarga.CostoUnitario  = _costoUnitario;
            nuevaCarga.Kilometraje    = _Kilometraje;
            nuevaCarga.CostoTotal     = costoTotal;
            nuevaCarga.Proveedor      = _proveedor;
            nuevaCarga.Operador       = operador;
            nuevaCarga.RutEstacion    = _rut;
            nuevaCarga.NumeroDeBoleta = _nBoleta;

            nuevaCarga.KilometrosRecorridos = kilometrosRecorridos;
            nuevaCarga.CostoPorKilometro    = costoPorKilometro;
            nuevaCarga.Rendimiento          = rendimiento;
            auto.CargasCombustible.Add(nuevaCarga);


            _db.SaveChanges();
        }