public CommonResult<CreateGroupResult> CreateGroup(CreateGroupRequest request)
        {
            var validator = new CreateGroupRequestDataValidator();

            request.Password = request.Password != null ?
                request.Password.ToBase64() :
                request.Password;

            request.PasswordConfirmation = request.PasswordConfirmation != null ?
                request.PasswordConfirmation.ToBase64() :
                request.Password;

            var validationResult = validator.Validate(request);

            if (validationResult.IsValid)
            {
                var result = _groupsRepository.Create(request);

                if (result.IsSuccess)
                {
                    return CommonResult<CreateGroupResult>.Success(result.Item);
                }
                else
                {
                    return CommonResult<CreateGroupResult>.Failure(result.ErrorMessage);
                }
            }
            else
            {
                return CommonResult<CreateGroupResult>.Failure(validationResult.Errors.First().ErrorMessage);
            }
        }
        public CommonResult<CreateGroupResult> Create(CreateGroupRequest request)
        {
            using(var context = ContextFactory.GetDbContext(_dbConfiguration))
            {
                var user = context.Users.SingleOrDefault(u => u.UserName == request.UserName);

                if (user != null)
                {
                    var groupWithGivenName = context.Groups.FirstOrDefault(x => x.Name == request.Name);

                    if (groupWithGivenName == null)
                    {
                        var group = new Group
                        {
                            Name = request.Name,
                            Description = request.Description,
                            IsPrivate = request.IsPrivate,
                            Password = request.Password,
                            Owner = user
                        };

                        context.Groups.Add(group);

                        context.UserGroups.Add(new UserGroup
                        {
                            User = user,
                            Group = group
                        });

                        context.SaveChanges();

                        return CommonResult<CreateGroupResult>.Success(new CreateGroupResult { Id = group.Id });
                    }
                    else
                    {
                        return CommonResult<CreateGroupResult>.Failure("Grupa o podanej nazwie już istnieje.");
                    }
                }
                else
                {
                    return CommonResult<CreateGroupResult>.Failure("Nie znaleziono podanego użytkownika.");
                }
            }
        }