public async Task <IActionResult> ListGeneric(long eventoId, long empresaId, bool mostrarTodos = false)
        {
            var dtos = (IEnumerable <EntradaDto>) await _entradaServicio.ObtenerGenericByEvento(eventoId, mostrarTodos);

            var models = dtos.Select(e => new EntradaViewModel()
            {
                Id            = e.Id,
                EstaEliminado = e.EliminadoStr,
                EventoId      = e.EventoId,
                ClienteId     = null,
                Precio        = e.Precio,
                TipoEntradaId = e.TipoEntradaId,
            }).ToList();

            foreach (var vm in models)
            {
                vm.Evento = await _helperEvento.Obtener(vm.EventoId);

                vm.TipoEntrada = await _helperTipoEntrada.Obtener(vm.TipoEntradaId);
            }

            ViewBag.EventoId     = eventoId;
            ViewBag.MostrarTodos = mostrarTodos;
            ViewBag.EmpresaId    = empresaId;
            return(View(models));
        }
Exemple #2
0
        public async Task <EntradaViewModel> ObtenerEntrada(long id)
        {
            var e = (EntradaDto)await _entradaServicio.Obtener(id);

            var model = new EntradaViewModel()
            {
                Id            = e.Id,
                TipoEntradaId = e.TipoEntradaId,
                Precio        = e.Precio,
                EventoId      = e.EventoId,
                Evento        = await _helperEvento.Obtener(e.EventoId),
                TipoEntrada   = await _helperTipoEntrada.Obtener(e.TipoEntradaId),
                ClienteId     = e.ClienteId
            };

            return(model);
        }
        public async Task <IActionResult> SeleccionarEntradas(PagoViewModel vm, long eventoId)
        {
            try
            {
                ViewBag.DatosInvalidos      = false;
                ViewBag.EntradaInsuficiente = false;
                ViewBag.ClienteExistente    = false;
                ViewBag.EventoId            = eventoId;

                if (!ModelState.IsValid)
                {
                    ViewBag.DatosInvalidos = true;
                    throw new Exception("Error de validacion no controlado.");
                }

                var evento = await _helperEvento.Obtener(eventoId);

                if (evento.CupoDisponible < vm.Cantidad)
                {
                    ViewBag.EntradaInsuficiente = true;
                    throw new Exception("Cantidad de entradas insuficiente.");
                }

                long clienteId = vm.Cliente.Id;
                var  clienteVm = vm.Cliente;

                if (!User.Identity.IsAuthenticated)
                {
                    var existe = await _helperCliente.ExisteCliente(vm.Cliente.Dni, vm.Cliente.Email);

                    if (existe)
                    {
                        ViewBag.ClienteExistente = true;
                        throw new Exception("Ya existe un cliente con los datos especificados.");
                    }

                    var clienteDto = new ClienteDto()
                    {
                        Apellido = vm.Cliente.Apellido,
                        Nombre   = vm.Cliente.Nombre,
                        Dni      = vm.Cliente.Dni,
                        Email    = vm.Cliente.Email
                    };
                    clienteId = await _clienteServicio.InsertarDevuelveId(clienteDto);

                    clienteVm = await _helperCliente.Obtener(clienteId);
                }

                await _helperEvento.ActualizarCupoDisponible(evento.Id, vm.Cantidad);


                // guardo la forma de pago
                var formaPagoDto = new FormaPagoTarjetaDto()
                {
                    Nombre               = vm.FormaPago.Nombre,
                    NumeroTarjeta        = vm.FormaPago.NumeroTarjeta,
                    AnioExp              = vm.FormaPago.AnioExp,
                    MesExp               = vm.FormaPago.MesExp,
                    CodigoSeguridad      = vm.FormaPago.CodigoSeguridad,
                    CodigoPostal         = vm.FormaPago.CodigoPostal,
                    DireccionFacturacion = vm.FormaPago.DireccionFacturacion
                };
                var formaPagoId = await _formaPagoTarjetaServicio.InsertarDevuelveId(formaPagoDto);

                var formaPagoVm = await _helperFormaPagoTarjeta.Obtener(formaPagoId);

                // guardo las entradas para el cliente (for int i=0; 1 < cantidad; i++)
                var entradaVm = await _helperEntrada.ObtenerEntrada(vm.EntradaId);

                long[] entradas = new long[vm.Cantidad];
                for (int i = 0; i < vm.Cantidad; i++)
                {
                    var entrada = new EntradaDto()
                    {
                        ClienteId     = clienteId,
                        EventoId      = entradaVm.EventoId,
                        Precio        = entradaVm.Precio,
                        TipoEntradaId = entradaVm.TipoEntradaId
                    };
                    var entradaId = await _entradaServicio.InsertarDevuelveId(entrada);

                    entradas[i] = entradaId;
                }

                return(RedirectToAction("AltaFacturaRedirect", "FacturaPDF", new { clienteId = clienteVm.Id, formaPagoId = formaPagoVm.Id, entradaId = entradaVm.Id, cantidad = vm.Cantidad, entradas }));
            }
            catch (Exception)
            {
                vm.EntradasGenericas = await _helperEntrada.PoblarComboGeneric(eventoId);

                return(View(vm));
            }
        }