Exemplo n.º 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));
            }
        }