Beispiel #1
0
 public BLSubasta(IDALSubasta dal)
 {
     this._dal = dal;
 }
Beispiel #2
0
        // TAREA FINALIZAR SUBASTAS
        public void FinalizarSubastasTarea(String tenant)
        {
            log.Info("Entro en finalizar SUBASTA POR TAREA");
            try
            {
                List <Subasta> subastas = ObtenerSubastasActivas(tenant);
                IBLOferta      ioferta  = new BLOferta();
                _dal = new DALSubastaEF();

                if (subastas.Count == 0)
                {
                    System.Diagnostics.Debug.WriteLine("No hay subastas activas");
                }
                if (subastas.Count > 0)
                {
                    System.Diagnostics.Debug.WriteLine("Cantidad Subastas = " + subastas.Count.ToString());
                }

                foreach (var item in subastas)
                {
                    log.Info("Hay subasta activa  Id =" + item.id.ToString());
                    List <Correo> lista         = new List <Correo>();
                    DateTime      ahora         = DateTime.Now;
                    DateTime      fecha_subasta = (DateTime)item.fecha_Cierre;

                    int resultado = DateTime.Compare(fecha_subasta, ahora);

                    log.Info("Paso fechas y resultado = " + resultado.ToString());

                    log.Info("Estado subasta = " + item.estado.ToString());

                    String estado = item.estado.ToString();



                    if (resultado <= 0 && estado.Equals("Activa"))
                    {
                        List <Oferta> ofertas = _dal.ObtenerOfertas(item.id);

                        log.Info("Cantidad ofertas = " + ofertas.Count.ToString());
                        if (ofertas.Count > 0)
                        {
                            var ofertasOrdenadas = ofertas.OrderByDescending(o => o.fecha);
                            //var oferta = ofertasOrdenadas.First();
                            IBLUsuario blUsu    = new BLUsuario();
                            Usuario    ganador  = null;
                            Usuario    vendedor = null;
                            foreach (var itemOfertas in ofertasOrdenadas)
                            {
                                if (ganador == null)
                                {
                                    var usuario = blUsu.GetUsuario(tenant, itemOfertas.id_Usuario);
                                    if (usuario.billetera > item.valor_Actual)
                                    {
                                        ganador           = usuario;
                                        ganador.billetera = ganador.billetera - itemOfertas.Monto;//le descuento plata al comprador
                                        blUsu.ActualizarUsuario(tenant, ganador);
                                        item.valor_Actual = itemOfertas.Monto;
                                        item.id_Comprador = ganador.id;

                                        vendedor           = blUsu.GetUsuario(tenant, item.id_Vendedor);//le asigno plata al vendedor
                                        vendedor.billetera = vendedor.billetera + itemOfertas.Monto;
                                        blUsu.ActualizarUsuario(tenant, vendedor);
                                    }
                                }
                            }
                            item.finalizado = TipoFinalizacion.Subasta;
                            item.estado     = EstadoTransaccion.Cerrada;
                            _dal.ActualizarSubasta(tenant, item);

                            try
                            {
                                lista = _dal.correoCompraSubasta(tenant, (Subasta)item);
                                IEnvioCorreo _envio = new EnvioCorreo();
                                _envio.enviarCorreos(lista);
                            }
                            catch (Exception e)
                            {
                                log.Error("Error", e);
                                throw e;
                            }
                        }
                        else
                        {
                            log.Info("Sin ofertas = " + ofertas.Count.ToString());
                            try
                            {
                                item.estado = EstadoTransaccion.Cerrada;
                                _dal.ActualizarSubasta(tenant, (Subasta)item);

                                log.Info("Actualizo Subasta sin ofertas " + item.titulo);


                                lista = new List <Correo>();

                                Correo correo = _dal.correoSinOfertas(tenant, (Subasta)item);

                                log.Info("Correo " + correo.mensaje);

                                lista.Add(_dal.correoSinOfertas(tenant, (Subasta)item));


                                IEnvioCorreo _envio = new EnvioCorreo();

                                _envio.enviarCorreos(lista);
                                log.Info("Salgo Finalizar Compra directa sin oferta ");
                            }
                            catch (Exception e)
                            {
                                log.Error("Error", e);
                                throw e;
                            }
                        }
                    }
                }
                log.Info("Salgo de finalizar SUBASTA POR TAREA");
            }
            catch (Exception e)
            {
                log.Error("Error", e);
                throw e;
            }
        }