Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- namespace PhotoShare.Client.Core.Commands
- {
- using System;
- using System.Collections.Generic;
- using System.ComponentModel.DataAnnotations;
- using Contracts;
- using PhotoShare.Client.Core.Dtos;
- using PhotoShare.Services.Contracts;
- public class RegisterUserCommand : ICommand
- {
- private readonly IUserService userService;
- public RegisterUserCommand(IUserService userService)
- {
- this.userService = userService;
- }
- // RegisterUser <username> <password> <repeat-password> <email>
- public string Execute(string[] data)
- {
- var username = data[0];
- var pass = data[1];
- var repeatedPass = data[2];
- var email = data[3];
- var userExist = this.userService.Exists(username);
- if (userExist)
- {
- throw new InvalidOperationException($"Username [{username}] is already taken!");
- }
- if (!pass.Equals(repeatedPass))
- {
- throw new ArgumentException("Passwords do not match!");
- }
- var registerUserDto = new RegisterUserDto { Username = username, Password = pass, Email = email };
- if (!IsValid(registerUserDto))
- {
- throw new ArgumentException("Invalid arguments inserted!");
- }
- this.userService.Register(username, pass, email);
- return $"User [{username}] was registered successfully!";
- }
- private bool IsValid(object obj)
- {
- var validationContext = new ValidationContext(obj);
- var validationResults = new List<ValidationResult>();
- return Validator.TryValidateObject(obj, validationContext, validationResults, true);
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement