public async Task <ActionResult> Put(int id, [FromBody] AlterarReservaViewModel reserva)
        {
            ReservaRepository _reserva = new ReservaRepository();
            var ReservaUsuario         = await _reserva.BuscarPorID(id);

            if (ReservaUsuario == null)
            {
                return(NotFound(new {
                    Mensagem = "Reserva não encontrada",
                    Erro = true
                }));
            }

            OfertaRepository _oferta = new OfertaRepository();
            var QtdOferta            = await _oferta.BuscarPorID(ReservaUsuario.OfertaId.Value);


            if (QtdOferta != null)
            {
                QtdOferta.Quantidade = QtdOferta.Quantidade + ReservaUsuario.Quantidade;
                var RetornorOferta = await _oferta.Alterar(QtdOferta);
            }


            if (QtdOferta.Quantidade < reserva.Quantidade)
            {
                return(NotFound(new {
                    Mensagem = "Atenção! Quantidade desejada maior que a ofertada",
                    Erro = true
                }));
            }

            var ReservaAlterada = VerificaAlteracaoReserva(ReservaUsuario, reserva);

            QtdOferta.Quantidade = QtdOferta.Quantidade - ReservaAlterada.Quantidade;

            try {
                await _repositorio.Alterar(ReservaAlterada);

                await _oferta.Alterar(QtdOferta);

                return(Ok(new {
                    Mensagem = "Reserva Alterada Com Sucesso",
                    Erro = false
                }));
            } catch (DbUpdateConcurrencyException) {
                //Verificamos se o objeto realmente existe no banco
                var reserva_valido = await _repositorio.BuscarPorID(id);

                if (reserva_valido == null)
                {
                    return(NotFound());
                }
                else
                {
                    throw;
                }
            }
        }
Esempio n. 2
0
        public IEnumerable <Oferta> Get()
        {
            OfertaRepository repository = new OfertaRepository();
            var resultado = repository.Listar().Select(x => _mapper.Map <Oferta>(x));

            //Consulta DAO
            return(resultado.AsEnumerable <Oferta>());
        }
Esempio n. 3
0
        private static async void RotinaOfertaExpirada()
        {
            using (CoorganicasContext _contexto = new CoorganicasContext()){
                OfertaRepository _oferta = new OfertaRepository();

                var Ofertas = await _oferta.Listar();

                foreach (var oferta in Ofertas)
                {
                    if (oferta.Validade.Date <= DateTime.Now.Date)
                    {
                        var Ret = await _oferta.Excluir(oferta);
                    }
                }
            }
        }
        public async Task <ActionResult <Reserva> > Post([FromBody] CadastrarReservaViewModel reserva)
        {
            try {
                OfertaRepository _oferta = new OfertaRepository();
                var QtdOferta            = await _oferta.BuscarPorID(reserva.OfertaId);

                if (QtdOferta.Quantidade < reserva.Quantidade)
                {
                    return(Accepted(new {
                        Mensagem = "Quantidade desejada maior que a ofertada",
                        Erro = true
                    }));
                }

                Reserva NovoReserva = new Reserva();
                NovoReserva.DataReserva   = DateTime.Now.Date;
                NovoReserva.DataEspera    = NovoReserva.DataReserva.AddDays(5);
                NovoReserva.StatusReserva = "Aguardando";
                NovoReserva.UsuarioId     = PegarUsuarioLogadoId(); // Quanto fizer a pagina de login volta a função
                NovoReserva.OfertaId      = reserva.OfertaId;
                NovoReserva.Quantidade    = reserva.Quantidade;

                var RetornoReserva = await _repositorio.Salvar(NovoReserva);

                if (RetornoReserva != null)
                {
                    QtdOferta.Quantidade = QtdOferta.Quantidade - reserva.Quantidade;
                    var RetornorOferta = await _oferta.Alterar(QtdOferta);

                    if (RetornorOferta != null)
                    {
                        return(Ok(new {
                            Mensagem = "Reserva Cadastrada Com Sucesso",
                            Erro = false
                        }));
                    }
                }

                return(NotFound(new {
                    Mensagem = "Não Foi Possível Fazer a Reserva",
                    Erro = true
                }));
            } catch (DbUpdateConcurrencyException) {
                throw;
            }
        }
Esempio n. 5
0
        /// <summary>
        ///     Rotina para excluir reservas expiradas e ofertas vencidas
        /// </summary>
        /// <returns></returns>
        public static async void RotinaReservaExistente()
        {
            using (CoorganicasContext _contexto = new CoorganicasContext()){
                OfertaRepository  _oferta  = new OfertaRepository();
                ReservaRepository _reserva = new ReservaRepository();

                var Reservas = await _contexto.Reserva.Include("Oferta").ToListAsync();

                var Ofertas = await _contexto.Oferta.ToListAsync();

                if (Ofertas != null)
                {
                    foreach (var reserva in Reservas)
                    {
                        if (reserva.DataEspera <= DateTime.Now.Date)
                        {
                            var qtd = reserva.Quantidade;

                            foreach (var oferta in Ofertas)
                            {
                                if (oferta.OfertaId == reserva.Oferta.OfertaId)
                                {
                                    oferta.Quantidade = oferta.Quantidade + qtd;
                                    await _oferta.Alterar(oferta);

                                    await _reserva.Excluir(reserva);

                                    if (oferta.Validade.Date <= DateTime.Now.Date)
                                    {
                                        await _oferta.Excluir(oferta);
                                    }
                                }
                            }
                        }
                    }

                    RotinaOfertaExpirada();
                }
            }
        }
        public async Task <ActionResult <Reserva> > Delete(int id)
        {
            var reserva = await _repositorio.BuscarPorID(id);

            if (reserva == null)
            {
                return(NotFound());
            }

            OfertaRepository _oferta = new OfertaRepository();
            var oferta = await _oferta.BuscarPorID(reserva.OfertaId.Value);

            if (oferta.Validade.Date > DateTime.Now.Date)
            {
                oferta.Quantidade = oferta.Quantidade + reserva.Quantidade;
                await _oferta.Alterar(oferta);
            }


            await _repositorio.Excluir(reserva);

            return(reserva);
        }
Esempio n. 7
0
        public IActionResult Index()
        {
            var listaModel = new List <Oferta>();

            OfertaRepository repo = new OfertaRepository();

            foreach (var item in repo.Listar())
            {
                listaModel.Add(new Oferta
                {
                    Id                  = item.IdOferta,
                    Descricao           = item.Descricao,
                    Data                = item.Data,
                    Situacao            = item.Situacao,
                    IdUsuario           = item.IdUsuario,
                    TipoOferta          = item.TipoOferta,
                    DescricaoTipoOferta = StatusTipoOferta(item.TipoOferta),
                    DesricaoSituacao    = StatusSituacao(item.Situacao)
                });
            }

            return(View(listaModel));
        }
Esempio n. 8
0
 private async Task SyncronizeData(DateTime?date = null)
 {
     await Task.WhenAll(new Task[]
     {
         Task.Run(() => OfertaRepository.SyncDataBaseAsync(date)),
         Task.Run(() => CarteiraProdutoRepository.SyncDataBaseAsync(date)),
         Task.Run(() => ProdutoRepository.SyncDataBaseAsync(date)),
         Task.Run(() => TipoRepository.SyncDataBaseAsync(date)),
         Task.Run(() => MarcaRepository.SyncDataBaseAsync(date)),
         Task.Run(() => EstabelecimentoRepository.SyncDataBaseAsync(date)),
         Task.Run(() => UnidadeMedidaRepository.SyncDataBaseAsync(date)),
         Task.Run(() => GrupoOfertaRepository.SyncDataBaseAsync(date)),
         Task.Run(() => HistoricoOfertaRepository.SyncDataBaseAsync(date)),
         Task.Run(() => ParticipanteGrupoRepository.SyncDataBaseAsync(date)),
         Task.Run(() => UserRepository.SyncDataBaseAsync(date)),
         Task.Run(() => CategoriaRepository.SyncDataBaseAsync(date)),
         Task.Run(() => MonitoramentoOfertaRepository.SyncDataBaseAsync(date)),
         Task.Run(() => ListaCompraRepository.SyncDataBaseAsync(date)),
         Task.Run(() => ParticipanteListaCompraRepository.SyncDataBaseAsync(date)),
         Task.Run(() => ParticipanteListaCompraRepository.SyncDataBaseAsync(date)),
         Task.Run(() => ProdutoListaCompraRepository.SyncDataBaseAsync(date)),
     });
 }
Esempio n. 9
0
 public OfertaController(ClienteRepository clienteRepository, ProdutoRepository produtoRepository, OfertaRepository ofertaRepository)
 {
     _clienteRepository = clienteRepository;
     _produtoRepository = produtoRepository;
     _ofertaRepository  = ofertaRepository;
 }
Esempio n. 10
0
 public async Task <bool> FirstUsageAsync() => (await OfertaRepository.GetEntitiesAsync(0, 1)).Count == 0;
Esempio n. 11
0
 public VendaController(OfertaRepository ofertaRepository, ILogger <VendaController> logger)
 {
     _ofertaRepository = ofertaRepository;
     _logger           = logger;
 }
 public OfertaService(OfertaRepository ofertaRepository)
 {
     this.ofertaRepository = ofertaRepository;
 }