Пример #1
0
        public void ShouldMapHabitCompletionToHabitCompletionsListDto()
        {
            var entity = new HabitCompletion();

            var result = _mapper.Map <HabitCompletionsListDto>(entity);

            result.ShouldNotBeNull();
            result.ShouldBeOfType <HabitCompletionsListDto>();
        }
            public async Task <int> Handle(UpsertHabitCompletionCommand request, CancellationToken cancellationToken)
            {
                var habitCompleted = await _context.Habits.FindAsync(request.HabitId);

                if (habitCompleted == null)
                {
                    throw new NotFoundException(nameof(Habit), request.HabitId);
                }

                var habitVariationCompleted = _context.HabitVariations.FindAsync(request.HabitVariationId);

                if (habitVariationCompleted == null)
                {
                    throw new NotFoundException(nameof(HabitVariation), request.HabitVariationId);
                }

                var habitDifficultyCompleted = _context.HabitDifficulties.FindAsync(request.HabitDifficultyId);

                if (habitDifficultyCompleted == null)
                {
                    throw new NotFoundException(nameof(HabitDifficulty), request.HabitDifficultyId);
                }

                HabitCompletion entity;

                if (request.Id > 0)
                {
                    entity = await _context.HabitCompletions.FindAsync(request.Id);

                    await _mediator.Publish(new HabitCompletionUpdated { HabitCompletionId = entity.HabitCompletionId }, cancellationToken);
                }
                else
                {
                    entity = new HabitCompletion();
                    _context.HabitCompletions.Add(entity);
                    await _mediator.Publish(new HabitCompletionCreated { HabitCompletionId = entity.HabitCompletionId }, cancellationToken);
                }

                entity.Date              = request.Date;
                entity.Habit             = habitCompleted;
                entity.HabitVariationId  = request.HabitVariationId;
                entity.HabitDifficultyId = request.HabitDifficultyId;

                await _context.SaveChangesAsync(cancellationToken);

                return(entity.HabitCompletionId);
            }