Пример #1
0
        public async Task <ResultSpec <bool> > Update(TeacherAddUpdateModel teacherAddUpdateModel)
        {
            var today = await _dateTimeProvider.GetTodayDateTime();

            var specResult = TeacherAddUpdateSpec.IsSatisfiedBy(teacherAddUpdateModel, TeacherDomainConstants.MinAgeForTeacher, TeacherDomainConstants.MaxAgeForTeacher, today);

            if (specResult.OverallResult)
            {
                using (var scope = new TransactionScope(
                           TransactionScopeOption.Required,
                           new TransactionOptions {
                    IsolationLevel = IsolationLevel.ReadCommitted
                }))
                {
                    var teacher = _mapper.Map(teacherAddUpdateModel, new Teacher());

                    await _asyncTeacherRepository.Update(teacher);

                    await _asyncTeacherRepository.Save();

                    scope.Complete();

                    return(Results.WithOkSpec(true).AddMessage(Resource.Successful));
                }
            }
            else
            {
                return(Results.WithFailSpec(false).AddSpec(specResult).AddMessage(Resource.Unsuccessfull));
            }
        }
        public async Task <ResultSpec <int> > Add(TeacherAddUpdateModel teacherAddUpdateModel)
        {
            var today = await _dateTimeProvider.GetTodayDateTime();

            var specResult = TeacherAddUpdateSpec.IsSatisfiedBy(teacherAddUpdateModel, 18, today);


            if (specResult.OverallResult)
            {
                using (var scope = new TransactionScope(
                           TransactionScopeOption.Required,
                           new TransactionOptions {
                    IsolationLevel = IsolationLevel.ReadCommitted
                }))
                {
                    var teacher = _mapper.Map <Teacher>(teacherAddUpdateModel.Teacher);

                    var newTeacherId = await _asyncTeacherRepository.Insert(teacher);

                    await _asyncTeacherRepository.Save();

                    scope.Complete();

                    return(Results.WithOkSpec <int>(newTeacherId).AddMessage(Resource.Successful).AddSpec(new SpecificationResult()));
                }
            }
            else
            {
                return(Results.WithFailSpec <int>(-1).AddSpec(specResult));
            }
        }
Пример #3
0
        public async Task Kabul_edilen_yas_araligi_disinda_ogretmen_kaydedildiginde_result_fail_donmeli(int age)
        {
            //Arrange

            dateTimeProviderMock.Setup(t => t.GetTodayDateTime())
            .ReturnsAsync(() => new DateTime(2020, 01, 01));

            var today = dateTimeProviderMock.Object.GetTodayDateTime();

            // TODO : sadece ilgilendiğimiz parametreleri doldursak olmazmıydı
            var teacherBlDto = new TeacherBlDto
            {
                BirthDate = new DateTime(today.Result.Year - age, 01, 01),
                FirstName = "Murat",
                LastName  = "Çabuk",
                Gender    = "Male",
            };

            var teacher = new Teacher
            {
                BirthDate = new DateTime(2003, 01, 01),
                FirstName = "Murat",
                LastName  = "Çabuk",
                Gender    = "Male",
            };

            mapperMock.Setup(t => t.Map <Teacher>(teacherBlDto)).Returns(teacher);

            asyncTeacherRespositoryMock.Setup(t => t.Insert(teacher));

            sutTeacherManager = new TeacherManager(asyncTeacherRespositoryMock.Object,
                                                   mapperMock.Object,
                                                   dateTimeProviderMock.Object,
                                                   cacheMock.Object);

            var teacherAddUpdateModel = new TeacherAddUpdateModel
            {
                Teacher = teacherBlDto
            };

            //Act
            var result = await sutTeacherManager.Add(teacherAddUpdateModel);

            var count = result.SpecResult.FailedSpecifications.ToFilteredSpecs(nameof(TeacherBlDto.BirthDate)).Count;

            //Assert
            Assert.True(count > 0);

            // TODO : şu şekilde yapsaydık olmazmıydı
            // Assert.False(result.IsOk);
        }
        public async Task <IActionResult> AddUpdate(TeacherAddUpdateViewModel teacherAddUpdateViewModel)
        {
            var genders = await _optionManager.GetGenders();

            var teacherBlDto = _mapper.Map <TeacherBlDto>(teacherAddUpdateViewModel.Teacher);

            var teacherAddUpdateModel = new TeacherAddUpdateModel
            {
                Teacher = teacherBlDto
            };

            var result = await _teacherManager.Add(teacherAddUpdateModel);

            ModelState.FromSpec(result.SpecResult.FailedSpecifications);

            teacherAddUpdateViewModel.Teacher.Id = result.Data;
            teacherAddUpdateViewModel.Message    = result.Message;
            teacherAddUpdateViewModel.Genders    = genders;

            return(View(teacherAddUpdateViewModel));
        }