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)); }
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)); } }