public async Task CreateTask(TaskContract contract, string ownerId) { var group = await _repository.GetGroup(contract.GroupId); if (group.OwnerId != ownerId && group.CoOwnerId != ownerId) { throw new UserNotOwnerException(); } if (group.Tasks.Any(t => t.Name == contract.Name)) { throw new NameAlreadyUsedException(contract.Name); } var task = _taskModelMapper.Map(contract); await _repository.AddTask(task); }