public async Task <CreateApplicantResponse> CreateApplicant(CreateApplicantRequest request) { try { var response = await _unitOfWork.ApplicantRepository.InsertAsync(new Data.Entities.Applicant() { Name = request.Name, FamilyName = request.FamilyName, Address = request.Address, CountryOfOrigin = request.CountryOfOrigin, EmailAddress = request.EmailAddress, Age = request.Age, Hired = request.Hired, }); await _unitOfWork.SaveChanges(); return(new CreateApplicantResponse() { Id = response.Id, Name = response.Name, FamilyName = response.FamilyName, Address = response.Address, CountryOfOrigin = response.CountryOfOrigin, EmailAddress = response.EmailAddress, Age = response.Age, Hired = response.Hired, }); } catch (Exception ex) { this._logger.LogError("CreateApplicant has an error", ex); throw; } }
public CreateApplicantResponse CreateApplicant(CreateApplicantRequest request) { CreateApplicantResponse response = new CreateApplicantResponse(); AuthToken authToken = null; try { Common.Helpers.ValidationHelper.ValidateRequiredField(request.AuthToken, "Auth Token"); Common.Helpers.ValidationHelper.ValidateRequiredField(request.AntiForgeryToken, "Anti Forgery Token"); if (!UserController.ValidateSession(request.AuthToken, out authToken)) { throw new AuthenticationException("Authentication failed."); } UserController.ValidateAntiForgeryToken(request.AntiForgeryToken, authToken); DbContext context = DataController.CreateDbContext(); E::Applicant newApplicant = CreateApplicant(context, request.FirstName, request.LastName, request.EmailAddress, authToken.Username); context.SaveChanges(); response.ApplicantID = newApplicant.ID; } catch (AuthenticationException ex) { throw new WebFaultException <string>(ex.Message, System.Net.HttpStatusCode.BadRequest); } catch (Common.Exceptions.ValidationException ex) { throw new WebFaultException <string>(ex.Message, System.Net.HttpStatusCode.BadRequest); } catch (Exception ex) { ExceptionHelper.Log(ex, authToken == null ? null : authToken.Username); throw new WebFaultException <string>("An unknown error has occurred.", System.Net.HttpStatusCode.InternalServerError); } return(response); }
public async Task <IActionResult> CreateAsync([FromBody] CreateApplicantRequest applicantRequest) { var isValid = await _countryLookupService.IsValidCountry(applicantRequest.CountryOfOrigin); if (!isValid) { return(BadRequest("Invalid country name")); } var isExists = await _applicantService.GetApplicantByEmailAsync(applicantRequest.EmailAddress); if (isExists) { return(BadRequest("User with this email already exists")); } //TODO: externlize conversions, using AutoMapper var applicant = new Applicant { Id = Guid.NewGuid(), Name = applicantRequest.Name, FamilyName = applicantRequest.FamilyName, Address = applicantRequest.Address, CountryOfOrigin = applicantRequest.CountryOfOrigin, EmailAddress = applicantRequest.EmailAddress, Age = applicantRequest.Age, Hired = applicantRequest.Hired }; await _applicantService.CreateApplicantAsync(applicant); var baseUri = $"{HttpContext.Request.Scheme}://{HttpContext.Request.Host.ToUriComponent()}"; var locationUri = baseUri + "/" + ApiRoutes.Applicants.Get.Replace("{ApplicantId}", applicant.Id.ToString()); var response = new ApplicantResponse { Id = applicant.Id }; return(Created(locationUri, response)); }
public async Task <IActionResult> CreateAsync(CreateApplicantRequest request) { try { var response = await _applicantService.CreateApplicant(new Domain.Applicant.Models.CreateApplicantRequest() { Name = request.Name, FamilyName = request.FamilyName, Address = request.Address, CountryOfOrigin = request.CountryOfOrigin, EmailAddress = request.EmailAddress, Age = request.Age, Hired = request.Hired, }); return(CreatedAtRoute("Get", new { id = response.Id }, response)); } catch (System.Exception ex) { this._logger.LogError(ex, "error while create"); return(StatusCode(StatusCodes.Status500InternalServerError)); } }