예제 #1
0
        public JsonResult CrearSubasta(string propiedad, string valorMinimo, string fechaComienzo, string fechaReserva)
        {
            SUBASTA nuevaSubasta = new SUBASTA();

            nuevaSubasta.IdPropiedad   = Int32.Parse(propiedad);
            nuevaSubasta.FechaComienzo = DateTime.Parse(fechaComienzo);
            nuevaSubasta.FechaReserva  = DateTime.Parse(fechaReserva);
            nuevaSubasta.ValorMinimo   = Convert.ToDecimal(valorMinimo);
            nuevaSubasta.Estado        = "NUEVO";

            var mensaje = this.servicioSubasta.CrearSubasta(nuevaSubasta);

            if (mensaje != "OK")
            {
                Response.StatusCode = (int)HttpStatusCode.BadRequest;
                return(Json(mensaje, JsonRequestBehavior.AllowGet));
            }

            var           clientesNotificar = this.servicioPropiedad.ObtenerNotificaciones(nuevaSubasta.IdPropiedad);
            List <string> clientes          = new List <string>();
            var           subastaModel      = new SubastaViewModel().ToViewModel(nuevaSubasta);

            subastaModel.Propiedad = this.servicioPropiedad.ObtenerPropiedades().Where(t => t.IdPropiedad == subastaModel.IdPropiedad).SingleOrDefault();

            foreach (var notificacion in clientesNotificar)
            {
                clientes.Add(notificacion.CLIENTE.Email);
            }


            this.servicioMail.EnviarNotificacionNuevaSubasta(clientes, subastaModel);
            return(this.SubastasSinEmpezar());
        }
예제 #2
0
        public string CrearSubasta(SUBASTA nuevaSubasta)
        {
            List <SubastaViewModel> subastasPropiedad = this.ObtenerSubastasDePropiedad(nuevaSubasta.IdPropiedad);
            ReservaService          servicioReserva   = new ReservaService();

            var reservasPropiedad = servicioReserva.ObtenerReservasPropiedad(nuevaSubasta.IdPropiedad);

            if (nuevaSubasta.ValorMinimo <= 0)
            {
                return(string.Format("No se pudo crear la subasta, el valor inicial para pujar debe ser mayor que 0."));
            }

            if (nuevaSubasta.FechaReserva.CompareTo(nuevaSubasta.FechaComienzo.AddDays(3)) < 0)
            {
                return(string.Format("No se pudo crear la subasta, la semana que se desea subastar transcurre durante o antes que la subasta."));
            }

            if (subastasPropiedad.Any(t => nuevaSubasta.FechaComienzo.CompareTo(Convert.ToDateTime(t.FechaReserva)) >= 0 &&
                                      nuevaSubasta.FechaComienzo.CompareTo(Convert.ToDateTime(t.FechaReserva).AddDays(7)) <= 0))
            {
                return(string.Format("No se pudo crear la subasta para la propiedad seleccionada, ya posee una subasta definida durante los días elegidos."));
            }

            if (reservasPropiedad.Any(t => nuevaSubasta.FechaReserva.CompareTo(Convert.ToDateTime(t.FechaReserva)) >= 0 &&
                                      nuevaSubasta.FechaReserva.CompareTo(Convert.ToDateTime(t.FechaReserva).AddDays(7)) <= 0))
            {
                return(string.Format("No se pudo crear la subasta para la propiedad seleccionada, posee reservas confirmadas durante los días elegidos a subastar."));
            }

            this.HomeSwitchDB.SUBASTA.Add(nuevaSubasta);
            this.HomeSwitchDB.SaveChanges();

            CacheHomeSwitchHome.RemoveOnCache("Subastas");
            return("OK");
        }
예제 #3
0
        public JsonResult ModificarSubasta(string idSubasta, string valorMinimo)
        {
            SUBASTA subastaActualizada = new SUBASTA();

            subastaActualizada.ValorMinimo = Convert.ToDecimal(valorMinimo);

            if (this.servicioSubasta.ActualizarSubasta(subastaActualizada, Int32.Parse(idSubasta)))
            {
                return(Json(this.servicioSubasta.ObtenerHistorialSubastas().ToArray(), JsonRequestBehavior.AllowGet));
            }

            return(null);
        }
예제 #4
0
        public bool ActualizarSubasta(SUBASTA subastaActualizada, int idSubasta)
        {
            if (subastaActualizada.ValorMinimo > 0)
            {
                var subastaModelo = this.HomeSwitchDB.SUBASTA.SingleOrDefault(t => t.IdSubasta == idSubasta);
                subastaModelo.ValorMinimo = subastaActualizada.ValorMinimo;

                this.HomeSwitchDB.SaveChanges();
                CacheHomeSwitchHome.RemoveOnCache("Subastas");

                return(true);
            }
            else
            {
                return(false);
            }
        }
예제 #5
0
        public string PujarSubasta(SUBASTA subastaPujada, int idSubasta, int idCliente)
        {
            var subastaActualizar = this.HomeSwitchDB.SUBASTA.SingleOrDefault(t => t.IdSubasta == idSubasta);

            var pujaService = new PujaService();

            var reservas = new ReservaService();

            if (subastaActualizar == null)
            {
                return(string.Format("Se ha producido un error en el servidor."));
            }

            if (subastaActualizar.ValorActual >= subastaPujada.ValorActual || subastaActualizar.ValorMinimo >= subastaPujada.ValorActual)
            {
                return(string.Format("El valor ingresado es menor al valor actual."));
            }

            if (reservas.ObtenerReservasClientePorAnio(idCliente, DateTime.Now.Year).Count == 2)
            {
                return(string.Format("Ya posee dos reservas efectuadas, no puede participar de la puja."));
            }

            if (reservas.ObtenerReservasCliente(idCliente).Any(t => (Convert.ToDateTime(t.FechaReserva).CompareTo(Convert.ToDateTime(subastaActualizar.FechaReserva)) <= 0 &&
                                                                     Convert.ToDateTime(t.FechaReserva).AddDays(7).CompareTo(Convert.ToDateTime(subastaActualizar.FechaReserva)) >= 0)

                                                               || (Convert.ToDateTime(subastaActualizar.FechaReserva).CompareTo(Convert.ToDateTime(t.FechaReserva)) <= 0 &&
                                                                   Convert.ToDateTime(subastaActualizar.FechaReserva).AddDays(7).CompareTo(Convert.ToDateTime(t.FechaReserva)) >= 0)

                                                               ))
            {
                return(string.Format("Ya posee una reserva durante la semana que se está subastando."));
            }

            subastaActualizar.ValorActual = subastaPujada.ValorActual;
            subastaActualizar.IdCliente   = idCliente;

            this.HomeSwitchDB.SaveChanges();
            CacheHomeSwitchHome.RemoveOnCache("Subastas");

            return(string.Format("OK"));
        }
예제 #6
0
        public JsonResult PujarEnSubasta(string idSubasta, string valorPujado)
        {
            SUBASTA subastaPujada = new SUBASTA();

            subastaPujada.ValorActual = Convert.ToDecimal(valorPujado);
            var sesionUser = (ClienteViewModel)Session["ClienteActual"];

            var mensaje = this.servicioSubasta.PujarSubasta(subastaPujada, int.Parse(idSubasta), sesionUser.IdCliente);

            if (mensaje == "OK")
            {
                var activas       = this.servicioSubasta.ObtenerSubastasActivas();
                var subastaActual = activas.Where(t => t.IdSubasta == int.Parse(idSubasta)).SingleOrDefault();

                this.pujaService.RegistrarPuja(subastaActual.IdSubasta, sesionUser.IdCliente, subastaActual.ValorActual);

                return(Json(this.servicioSubasta.ObtenerSubastasActivas().ToArray(), JsonRequestBehavior.AllowGet));
            }

            Response.StatusCode = (int)HttpStatusCode.BadRequest;
            return(Json(mensaje, JsonRequestBehavior.AllowGet));
        }
        public static void Agregar(Subasta subasta)
        {
            using (var db = new DBEntities())
            {
                try
                {
                    SUBASTA s = new SUBASTA();
                    s.FECHAINICIO     = subasta.FechaInicio;
                    s.FECHATERMINO    = subasta.FechaTermino;
                    s.IDPEDIDO        = subasta.Pedido.IdPedido;
                    s.IDESTADOSUBASTA = 1;

                    db.SUBASTA.Add(s);
                    db.SaveChanges();

                    subasta.IdSubasta = (int)s.IDSUBASTA;
                }catch (Exception ex)
                {
                    ex.Message.ToString();
                }
            }
        }
예제 #8
0
        public SubastaViewModel ToViewModel(SUBASTA subasta)
        {
            this.IdSubasta   = subasta.IdSubasta;
            this.IdPropiedad = subasta.IdPropiedad;

            if (subasta.PROPIEDAD != null)
            {
                this.Propiedad = new PropiedadViewModel().ToViewModel(subasta.PROPIEDAD);
            }
            this.FechaComienzo = Convert.ToString(subasta.FechaComienzo.Date);
            this.FechaReserva  = Convert.ToString(subasta.FechaReserva.Date);
            this.ValorMinimo   = subasta.ValorMinimo;
            this.ValorActual   = subasta.ValorActual;
            this.Estado        = subasta.Estado;
            this.IdCliente     = subasta.IdCliente;

            if (subasta.CLIENTE != null)
            {
                this.Cliente = new ClienteViewModel().ToViewModel(subasta.CLIENTE);
            }

            return(this);
        }
예제 #9
0
        /// <summary>
        /// Obtener la subasta de acuerdo a la id asignada a la instancia
        /// </summary>
        /// <returns></returns>
        public bool Read()
        {
            try
            {
                using (var db = new DBEntities())
                {
                    SUBASTA subasta = db.SUBASTA.Where(sb => sb.IDSUBASTA == this.IdSubasta).FirstOrDefault();
                    if (subasta != null)
                    {
                        this.FechaInicio  = subasta.FECHAINICIO;
                        this.FechaTermino = subasta.FECHATERMINO;

                        //Obtener Estado subasta
                        EstadoSubasta estado = new EstadoSubasta();
                        estado.IdEstadoSubasta = (int)subasta.IDESTADOSUBASTA;
                        estado.Read();
                        this.EstadoSubasta = estado;

                        //Obtener el pedido asociada a la subasta
                        Pedido pedido = new Pedido();
                        pedido.IdPedido = (int)subasta.IDPEDIDO;
                        pedido.Read();
                        this.Pedido         = pedido;
                        this.OfertasSubasta = OfertaSubasta.ReadByIdSubasta(this.IdSubasta);

                        return(true);
                    }

                    return(false);
                }
            }catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
                return(false);
            }
        }