Exemplo n.º 1
0
        public bool VerificarExistencia(BE.VehiculoStock vehiculo)
        {
            BE.Usuario usuario = Services.SessionManager.GetInstance.Usuario;

            var listaVehiculosMercado = _vehiculoMerBll.ListarVehiculos();
            var esTop = listaVehiculosMercado.Where(r => r.TipoVehiculo == vehiculo.TipoVehiculo && r.Marca == vehiculo.Marca &&
                                                    r.Modelo == vehiculo.Modelo && r.Version == vehiculo.Version).FirstOrDefault();

            if (esTop == null)
            {
                _bitacoraBll.RegistrarBitacora(usuario, $"El vehiculo de patente = {vehiculo.Patente} no se encuentra dentro de los mas vendidos del mercado", 1);
                return(true);
            }

            List <BE.VehiculoStock> listaStock = ListarVehiculosStock();

            var listaFiltrada = listaStock.Where(r => r.TipoVehiculo == vehiculo.TipoVehiculo && r.Marca == vehiculo.Marca &&
                                                 r.Modelo == vehiculo.Modelo && r.Version == vehiculo.Version);

            if (listaFiltrada.Count() >= 4)
            {
                _bitacoraBll.RegistrarBitacora(usuario, $"El vehiculo de patente = {vehiculo.Patente} no puede adquirirse, ya existen 4 vehciulos similares", 1);
                return(true);
            }

            return(false);
        }
Exemplo n.º 2
0
        public int CalcularPrecio(BE.VehiculoStock vehiculo, int formaAdq, int _precioVenta = 0)
        {
            var listaVehiculosMercado = _vehiculoMerBll.ListarVehiculos();
            var vehiculoMercado       = listaVehiculosMercado.Where(r => r.TipoVehiculo == vehiculo.TipoVehiculo && r.Marca == vehiculo.Marca &&
                                                                    r.Modelo == vehiculo.Modelo && r.Version == vehiculo.Version).FirstOrDefault();

            int precioMercado      = vehiculoMercado.PrecioMercado;
            int porcentajeGanancia = 0;

            if (formaAdq == 0)
            {
                porcentajeGanancia = 15;
            }
            else
            {
                if (vehiculo.Estado.Resultado >= 90 && (vehiculo.Kilometraje >= 1000 && vehiculo.Kilometraje <= 15000))
                {
                    porcentajeGanancia = 15;
                }
                else
                {
                    porcentajeGanancia = 20;
                }
            }

            double precioCompra = precioMercado - (precioMercado * porcentajeGanancia) / 100;

            double precioGanancia = precioCompra;

            precioCompra = (precioCompra * vehiculo.Estado.Resultado) / 100;

            int porcentajeKilometraje = 0;

            if (vehiculo.Kilometraje > 0 && vehiculo.Kilometraje < 1000)
            {
                porcentajeKilometraje += 1;
            }
            else if (vehiculo.Kilometraje >= 1000 && vehiculo.Kilometraje < 10000)
            {
                porcentajeKilometraje += 2;
            }
            else if (vehiculo.Kilometraje >= 10000 && vehiculo.Kilometraje < 50000)
            {
                porcentajeKilometraje += 5;
            }
            else if (vehiculo.Kilometraje >= 50000 && vehiculo.Kilometraje < 80000)
            {
                porcentajeKilometraje += 7;
            }
            else
            {
                porcentajeKilometraje += 12;
            }

            precioCompra -= (precioCompra * porcentajeKilometraje) / 100;
            int    precioCompraSugerido = (int)Math.Floor(precioCompra);
            double precioVenta          = precioVenta = precioCompra + (precioCompra * porcentajeGanancia) / 100;

            int precioVentaSugerido = (int)Math.Floor(precioVenta);

            if (formaAdq != 0)
            {
                if (_precioVenta != 0)
                {
                    if (_precioVenta > precioVentaSugerido)
                    {
                        throw new Exception("El precio de venta solicitado por el cliente es muy alto");
                    }
                    else if (_precioVenta < precioCompraSugerido)
                    {
                        throw new Exception("El precio de venta solicitado por el cliente es muy bajo");
                    }
                    else
                    {
                        precioVentaSugerido = _precioVenta;
                    }
                }
            }

            vehiculo.Precio = precioVentaSugerido.ToString();

            var usuario = Services.SessionManager.GetInstance.Usuario;

            _bitacoraBll.RegistrarBitacora(usuario, $"Precio calculado para el vehiculo de patente = {Cifrado.Desencriptar(vehiculo.Patente)}. " +
                                           $"Precio compra sugerido = {precioCompraSugerido}, precio de venta = {precioVentaSugerido}", 3);

            return(precioCompraSugerido);
        }