Example #1
0
        public void CreateAsync_ReturnsCorrectQualificationId()
        {
            var options = new DbContextOptionsBuilder <ApplicationDbContext>().UseInMemoryDatabase(Guid.NewGuid().ToString()).Options;

            using (var dbContext = new ApplicationDbContext(options))
            {
                CreateQualificationServiceModel qualification = new CreateQualificationServiceModel
                {
                    Name        = "TestQualification",
                    Description = "random desc",
                };

                var qualificationsService = new QualificationsService(dbContext);
                var result = qualificationsService.CreateAsync(qualification);

                Assert.Equal(1, result.Result);
            }
        }
        public async Task <IActionResult> CreateQualification(QualificationInputModel model)
        {
            this.InitializeAndFillUnifiedModel();
            if (!this.ModelState.IsValid)
            {
                return(this.View("Create", this.unifiedModel));
            }

            var qualification = new CreateQualificationServiceModel
            {
                Name        = model.QualificationName,
                Description = model.Description,
            };

            await this.qualificationsService.CreateAsync(qualification);

            return(this.RedirectToAction("Create"));
        }
        //--------------- METHODS -----------------
        /// <summary>
        /// Creates a new <see cref="Qualification"/> using the <see cref="CreateQualificationServiceModel"/>.
        /// If such <see cref="Qualification"/> already exists in the database, fetches it's (int)<c>Id</c> and returns it.
        /// If such <see cref="Qualification"/> 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 <c>Description</c></param>
        /// <returns>Qualification ID</returns>
        public async Task <int> CreateAsync(CreateQualificationServiceModel model)
        {
            int qualificationId = this.dbContext.Qualifications.Where(x => x.Name == model.Name)
                                  .Select(x => x.Id)
                                  .FirstOrDefault();

            if (qualificationId != 0)   // If qualificationId is different than 0 (int default value), qualification with such name already exists, so return it's id.
            {
                return(qualificationId);
            }

            Qualification qualification = new Qualification
            {
                Name        = model.Name,
                Description = model.Description,
            };

            await this.dbContext.Qualifications.AddAsync(qualification);

            await this.dbContext.SaveChangesAsync();

            return(qualification.Id);
        }