public static bool EliminarSolicitud(TiendaOnlineContext _db, int _id)
        {
            SolicitudCotizacion solicitudCotizacion = _db.SolicitudCotizacion.Where(s => s.Id == _id).FirstOrDefault();

            if (solicitudCotizacion == null)
            {
                return(false);
            }

            solicitudCotizacion.Usuario = null;
            solicitudCotizacion.Tienda  = null;

            foreach (ServicioSolicitadoCotizacion ssc in solicitudCotizacion.ServiciosSolicitadosCotizacion)
            {
                ssc.Servicio = null;
            }
            _db.ServiciosSolicitadosCotizacion.RemoveRange(solicitudCotizacion.ServiciosSolicitadosCotizacion);

            _db.SolicitudCotizacion.Remove(solicitudCotizacion);
            _db.SaveChanges();

            return(true);
        }
        public static bool CrearSolicitud(TiendaOnlineContext _db, List <Servicio> _servicios, Usuario _usuario, int idTienda, Vehiculo _vehiculo, string _comentario)
        {
            Tienda tienda = _db.Tienda.Where(u => u.Id == idTienda).FirstOrDefault();

            SolicitudCotizacion solicitudCotizacion = new SolicitudCotizacion();

            solicitudCotizacion.ServiciosSolicitadosCotizacion = new List <ServicioSolicitadoCotizacion>();

            //AGREGAR SERVICIOS A SOLICITUD
            foreach (Servicio servicio in _servicios)
            {
                ServicioSolicitadoCotizacion servicioSolicitado = new ServicioSolicitadoCotizacion();
                servicioSolicitado.Servicio   = servicio;
                servicioSolicitado.Valor      = servicio.Precio;
                servicioSolicitado.ValorTotal = servicio.Precio;

                solicitudCotizacion.ServiciosSolicitadosCotizacion.Add(servicioSolicitado);
            }

            //FECHA, TIENDA Y USUARIO Y COMENTARIO
            solicitudCotizacion.Fecha             = DateTime.Now;
            solicitudCotizacion.Tienda            = tienda;
            solicitudCotizacion.TiendaId          = tienda.Id;
            solicitudCotizacion.Usuario           = _usuario;
            solicitudCotizacion.UsuarioId         = _usuario.Id;
            solicitudCotizacion.ComentarioCliente = _comentario;

            //ASOCIAR VEHÍCULO CON SOLICITUD
            solicitudCotizacion.Vehiculos = new List <Vehiculo>();
            solicitudCotizacion.Vehiculos.Add(_vehiculo);

            tienda.SolicitudCotizaciones.Add(solicitudCotizacion);
            _db.SaveChanges();

            return(true);
        }
        }                                             //DEBE SER UNA!!!!!!!!!!

        public static Cotizacion CrearCotizacion(TiendaOnlineContext _db, Cotizacion _cotizacion, int _usuarioTiendaId, int _tiendaId, List <ServicioTemporal> servicios)
        {
            Usuario usuario       = _db.Usuarios.Where(u => u.Id == _cotizacion.UsuarioId).FirstOrDefault();
            Usuario usuarioTienda = _db.Usuarios.Where(u => u.Id == _usuarioTiendaId).FirstOrDefault();
            Tienda  tienda        = _db.Tienda.Where(u => u.Id == _tiendaId).FirstOrDefault();

            _cotizacion.ServiciosCotizados = new List <ServicioCotizado>();

            float subTotalNeto = 0;
            float descuento    = 0;
            float iva          = 0;
            float valorTotal   = 0;

            //------ ASOCIAR SERVICIOS
            SolicitudCotizacion solicitudCotizacion = _db.SolicitudCotizacion.Where(s => s.Id == _cotizacion.SolicitudCotizacionId).FirstOrDefault();

            _cotizacion.SolicitudCotizacion = solicitudCotizacion;

            foreach (ServicioTemporal servicioTemporal in servicios)
            {
                ServicioCotizado servicioCotizado = new ServicioCotizado();

                //Compueba si es un Servicio creado en la Cotización
                //Si es falso, se asocia a un Servicio en la Base de Datos
                if (!servicioTemporal.EsManual)
                {
                    Servicio servicioEncontrado = tienda.Servicios.Where(ssc => ssc.Id == servicioTemporal.Id).FirstOrDefault();
                    if (servicioEncontrado != null)
                    {
                        servicioCotizado.Servicio = servicioEncontrado;

                        if (servicioEncontrado.Categoria != null)
                        {
                            servicioCotizado.Categoria = servicioEncontrado.Categoria;
                        }
                    }
                }

                if (servicioCotizado.Categoria == null)
                {
                    Categoria categoria = _db.Categorias.Where(c => c.Id == servicioTemporal.CategoriaId).FirstOrDefault();
                    servicioCotizado.Categoria = categoria;
                }

                servicioCotizado.Nombre     = servicioTemporal.Nombre;
                servicioCotizado.Valor      = servicioTemporal.Valor;
                servicioCotizado.Cantidad   = servicioTemporal.Cantidad;
                servicioCotizado.ValorTotal = servicioTemporal.Valor * servicioTemporal.Cantidad;
                servicioCotizado.EsManual   = servicioTemporal.EsManual;

                //SUBTOTAL NETO
                subTotalNeto += servicioCotizado.ValorTotal;

                _cotizacion.ServiciosCotizados.Add(servicioCotizado);
            }

            valorTotal = subTotalNeto + (subTotalNeto * 19 / 100);
            iva        = valorTotal - subTotalNeto;

            _cotizacion.SubTotalNeto = subTotalNeto;
            _cotizacion.Descuento    = descuento;
            _cotizacion.TotalNeto    = subTotalNeto - descuento;
            _cotizacion.IVA          = iva;
            _cotizacion.TotalAPagar  = valorTotal;

            //ASOCIAR VEHÍCULO
            _cotizacion.Vehiculos = new List <Vehiculo>();
            Vehiculo vehiculo = new Vehiculo();

            vehiculo.Marca  = solicitudCotizacion.Vehiculos.First().Marca;
            vehiculo.Modelo = solicitudCotizacion.Vehiculos.First().Modelo;
            vehiculo.Year   = solicitudCotizacion.Vehiculos.First().Year;
            _cotizacion.Vehiculos.Add(vehiculo);

            //ASOCIAR LOGO
            LogoRemitente logoRemitente = tienda.LogosRemitente.Where(l => l.Id == _cotizacion.LogoId).FirstOrDefault();

            _cotizacion.LogoRemitente = logoRemitente;

            _cotizacion.Usuario           = usuario;
            _cotizacion.Tienda            = tienda;
            _cotizacion.Fecha             = DateTime.Now;
            _cotizacion.UsuarioQueAtendio = usuarioTienda.UsuarioTiendas.First();

            if (usuario.Cotizaciones == null)
            {
                usuario.Cotizaciones = new List <Cotizacion>();
            }

            _db.Cotizacions.Add(_cotizacion);

            try
            {
                _db.SaveChanges();
            }
            catch (Exception ex)
            {
                string e = ex.Message;
            }

            return(_cotizacion);
        }