public static Cotizacion AsociarMecanicoACotizacion(TiendaOnlineContext _db, int idTienda, int idCotizacion, int idUsuarioMecanico)
        {
            Tienda tienda = _db.Tienda.Where(ut => ut.Id == idTienda).FirstOrDefault();

            Cotizacion            cotizacion            = tienda.Cotizaciones.Where(c => c.Id == idCotizacion).FirstOrDefault();
            UsuarioTiendaMecanico usuarioTiendaMecanico = tienda.UsuarioTiendaMecanicos.Where(ust => ust.UsuarioTienda.Usuario.Id == idUsuarioMecanico).FirstOrDefault();

            cotizacion.UsuarioTiendaMecanico = usuarioTiendaMecanico;
            usuarioTiendaMecanico.Cotizaciones.Add(cotizacion);

            _db.SaveChanges();

            return(cotizacion);
        }
示例#2
0
        public static Cita CrearCita(TiendaOnlineContext _db, Cita _model)
        {
            UsuarioTiendaMecanico usuarioTiendaMecanico = _db.UsuarioTiendaMecanicos.Where(utm => utm.Id == _model.UsuarioTiendaMecanicoId).FirstOrDefault();
            Cotizacion            cotizacion            = _db.Cotizacions.Where(c => c.Id == _model.CotizacionId).FirstOrDefault();
            Usuario usuario = _db.Usuarios.Where(us => us.Id == _model.UsuarioId).FirstOrDefault();

            Cita cita = new Cita();

            cita.Codigo                = "CITA" + cotizacion.Id.ToString() + usuario.NombreCompleto + usuario.Id.ToString();
            cita.FechaInicio           = _model.FechaInicio;
            cita.FechaTermino          = _model.FechaTermino;
            cita.Cotizacion            = cotizacion;
            cita.Usuario               = usuario;
            cita.UsuarioTiendaMecanico = usuarioTiendaMecanico;

            if (usuarioTiendaMecanico.Agendas == null)
            {
                usuarioTiendaMecanico.Agendas = new List <Agenda>();
            }

            //CREAR UNA AGENDA
            //Agenda agenda = new Agenda();
            //agenda.UsuarioTiendaMecanico = usuarioTiendaMecanico;
            //agenda.Citas = new List<Cita>();

            //usuarioTiendaMecanico.Agendas.Add(agenda);

            if (usuarioTiendaMecanico.Agendas.First().Citas == null)
            {
                usuarioTiendaMecanico.Agendas.First().Citas = new List <Cita>();
            }

            usuarioTiendaMecanico.Agendas.First().Citas.Add(cita);
            cotizacion.Citas.Add(cita);

            _db.SaveChanges();
            return(cita);
        }
        public static void EliminarCotizacion(TiendaOnlineContext _db, int _idCotizacion)
        {
            Cotizacion cotizacion = _db.Cotizacions.Where(c => c.Id == _idCotizacion).FirstOrDefault();

            cotizacion.Usuario               = null;
            cotizacion.UsuarioQueAtendio     = null;
            cotizacion.UsuarioTiendaMecanico = null;
            cotizacion.Tienda = null;
            cotizacion.SolicitudCotizacion = null;

            //DESVINCULAR Y ELIMINAR SERVICIOS COTIZADOS
            foreach (ServicioCotizado sc in cotizacion.ServiciosCotizados)
            {
                sc.Servicio = null;
            }
            _db.ServiciosCotizados.RemoveRange(cotizacion.ServiciosCotizados);
            cotizacion.ServiciosCotizados = new List <ServicioCotizado>();

            //DESVINCULAR Y ELIMINAR CITAS
            foreach (Cita c in cotizacion.Citas)
            {
                c.UsuarioTiendaMecanico = null;
            }

            _db.Cita.RemoveRange(cotizacion.Citas);
            cotizacion.Citas = new List <Cita>();

            //DESVINCULAR VEHÍCULOS (NO SE DEBEN ELIMINAR YA QUE ESTÁN ASOCIADOS A UNA SOLICITUD)
            foreach (Vehiculo vehiculo in cotizacion.Vehiculos)
            {
                vehiculo.Cotizacion = null;
            }
            cotizacion.Vehiculos = new List <Vehiculo>();

            _db.Cotizacions.Remove(cotizacion);
            _db.SaveChanges();
        }
        }                                             //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);
        }