//--------------- METHODS ----------------- /// <summary> /// Creates a new <see cref="JobPosition"/> using the <see cref="CreateJobPositionServiceModel"/>. /// If such <see cref="JobPosition"/> already exists in the database, fetches it's (int)<c>Id</c> and returns it. /// If such <see cref="JobPosition"/> doesn't exist in the database, adds it and return it's (int)<c>Id</c>. /// </summary> /// <param name="model">Service model with <c>Name</c> and a collection of <c>Qualifications</c></param> /// <returns>Job Position ID</returns> public async Task <int> CreateAsync(CreateJobPositionServiceModel model) { int jobPositionId = this.dbContext.JobPositions.Where(x => x.Name == model.Name) .Select(x => x.Id) .FirstOrDefault(); if (jobPositionId != 0) // If jobPositionId is different than 0 (int default value), jobPosition with such name already exists, so return it's id. { return(jobPositionId); } JobPosition jobPosition = new JobPosition { Name = model.Name, }; foreach (var qualification in model.Qualifications) { await this.dbContext.JobPositionQualifications.AddAsync(new JobPositionQualification { JobPosition = jobPosition, QualificationId = qualification.Id, }); } // Adds job position without any qualifications if (model.Qualifications.Count() == 0) { await this.dbContext.JobPositions.AddAsync(jobPosition); } await this.dbContext.SaveChangesAsync(); return(jobPosition.Id); }
public async Task <IActionResult> CreateJobPosition(JobPositionInputModel model) { this.InitializeAndFillUnifiedModel(); if (!this.ModelState.IsValid) { return(this.View("Create", this.unifiedModel)); } var qualifications = new List <QualificationsDropdownServiceModel>(); if (model.QualificationIds != null) { foreach (int qualificationId in model.QualificationIds) { qualifications.Add(new QualificationsDropdownServiceModel { Id = qualificationId, }); } } var jobPosition = new CreateJobPositionServiceModel { Name = model.JobPositionName, Qualifications = qualifications, }; await this.jobPositionsService.CreateAsync(jobPosition); return(this.RedirectToAction("Create")); }