public async Task <IActionResult> Create(EmployerCreateModel input) { var ownerId = this.HttpContext.User.FindFirst(ClaimTypes.NameIdentifier)?.Value; //TODO CHEK FOR EmployersCount! And add it to userModel //TODO clear try catch and make validation attributes !!! or blazor validation var owner = await this.usersService.GetUserAsync <UserViewModel>(ownerId); if (owner.CompanyId == null) { return(this.RedirectToAction("Create", "Companies", new { area = "Owners" })); } try { await this.employeesManagerService.CreateAsync(input); } catch (Exception e) { this.ModelState.AddModelError(string.Empty, e.Message); } if (!this.ModelState.IsValid) { return(this.View(input)); } return(this.RedirectToAction("Index")); }
public async Task <int> CreateAsync(EmployerCreateModel input) { var address = await this.addressService.CreateAsync(input.AddressCountry, input.AddressCity, input.AddressStreet, input.AddressZipCode); var jobTitle = await this.jobTitlesService.CreateAsync(input.JobTitleName); if (this.employersRepository.All().Select(x => x.PhoneNumber).Contains(input.PhoneNumber)) { throw new Exception($"PhoneNumber {input.PhoneNumber} is already in use from another employer in your company."); } if (this.employersRepository.All().Select(x => x.Email).Contains(input.Email)) { throw new Exception($"Email {input.Email} is already in use from another employer in your company."); } var employer = new Employer { FirstName = input.FirstName, MiddleName = input.MiddleName, LastName = input.LastName, CompanyId = input.CompanyId, AddressId = address, JobTitleId = jobTitle, Email = input.Email, PhoneNumber = input.PhoneNumber, OwnerId = input.OwnerId, }; await this.employersRepository.AddAsync(employer); return(await this.employersRepository.SaveChangesAsync()); }
public async Task <IActionResult> Create() { var ownerId = this.HttpContext.User.FindFirst(ClaimTypes.NameIdentifier)?.Value; var owner = await this.usersService.GetUserAsync <UserViewModel>(ownerId); if (owner.CompanyId == null) { return(this.RedirectToAction("Create", "Companies", new { area = "Owners" })); } var viewModel = new EmployerCreateModel { OwnerId = ownerId, CompanyId = owner.CompanyId, }; return(this.View(viewModel)); }