public async Task <IActionResult> Create(EstablecimientoViewModel vm) { try { if (!ModelState.IsValid) { throw new Exception("Error de validacion no controlado."); } ViewBag.EstablecimientoDuplicado = false; // Existe establecimiento var existeEstablecimiento = await _establecimientoServicio.Existe(vm.Nombre, vm.Direccion.Descripcion, vm.Direccion.LocalidadId); if (existeEstablecimiento) { ViewBag.EstablecimientoDuplicado = true; throw new Exception("Establecimiento duplicado."); } // Existe direccion -> si no existe la creo y obtengo el id var direccionId = await _helperDireccion.ExisteDireccion(vm.Direccion); if (!direccionId.HasValue) { // creo la direccion y devuelvo el id direccionId = await _helperDireccion.NuevaDireccion(vm.Direccion); } vm.DireccionId = direccionId.Value; // creo el establecimiento var dto = new EstablecimientoDto() { Nombre = vm.Nombre, DireccionId = vm.DireccionId }; await _establecimientoServicio.Insertar(dto); return(RedirectToAction(nameof(Index))); } catch (Exception) { return(View(vm)); } }
public async Task <IActionResult> Edit(EmpresaViewModel vm) { try { if (!ModelState.IsValid) { throw new Exception("Error de validacion no controlado."); } // comprobar si cambio la direccion var direccionId = await _helperDireccion.ExisteDireccion(vm.Direccion); if (!direccionId.HasValue) { direccionId = await _helperDireccion.NuevaDireccion(vm.Direccion); } vm.DireccionId = direccionId.Value; var dto = new EmpresaDto() { Id = vm.Id, Cuil = vm.Cuil, DireccionId = vm.DireccionId, Email = vm.Email, NombreFantasia = vm.NombreFantasia, RazonSocial = vm.RazonSocial, }; await _empresaServicio.Modificar(dto); return(RedirectToAction(nameof(Index))); } catch (Exception) { return(View(vm)); } }
public async Task <IActionResult> EmpresaRegister(UsuarioEmpresaViewModel vm) { try { ViewBag.EmpresaDuplicada = false; ViewBag.EmailRequerido = false; if (!ModelState.IsValid) { if (vm.Empresa.Email == null) { ViewBag.EmailRequerido = true; } throw new Exception("Error de validacion no controlado."); } // verificar que no exista una empresa con el mismo cuil y razon social var existeEmpresa = await _helperEmpresa.ExisteEmpresa(vm.Empresa.Cuil, vm.Empresa.RazonSocial); if (existeEmpresa) { ViewBag.EmpresaDuplicada = true; throw new Exception("Empresa existente."); } // verificar que no exista una direccion con la misma descripcion y localidadId -> si existe no crearla y obtener el Id var direccionId = await _helperDireccion.ExisteDireccion(vm.Empresa.Direccion); if (!direccionId.HasValue) { // creamos la direccion y optenemos el id direccionId = await _helperDireccion.NuevaDireccion(vm.Empresa.Direccion); } vm.Empresa.DireccionId = direccionId.Value; // validar el usuario var user = new AppUser() { UserName = vm.Empresa.Email, Email = vm.Empresa.Email, NombreMostrar = vm.Empresa.RazonSocial }; var usuarioCreado = await _userManager.CreateAsync(user, vm.Password); if (!usuarioCreado.Succeeded) { ViewBag.UsuarioCreado = usuarioCreado; ViewBag.EmpresaDuplicada = true; throw new Exception("Error al crear usuario."); } // verificar si existe el rol "Empresa" -> si no existe crearlo var existeRol = await _roleManager.FindByNameAsync("Empresa"); if (existeRol == null) { var rol = new AppRole() { Name = "Empresa" }; await _roleManager.CreateAsync(rol); } // asignar el rol al usuario await _userManager.AddToRoleAsync(user, "Empresa"); // guardar la empresa si lo anterior es valido -> si no es valido eliminar el usuario y arrojar new Exception() var empresaCreada = await _helperEmpresa.NuevaEmpresa(vm.Empresa); if (!empresaCreada) { await _userManager.DeleteAsync(user); throw new Exception("Error al crear la empresa."); } // realizar login y redireccionar a home var result = await _signInManager.PasswordSignInAsync(user, vm.Password, false, false); if (!result.Succeeded) { throw new Exception("Error al inicir sesion."); } return(RedirectToAction("Index", "Home")); } catch (Exception) { return(View(vm)); } }