public static UserForJson ConvertUserToJsonUser(TbIuser tbIuser)
        {
            UserForJson userForJson = new UserForJson(
                username: tbIuser.Username,
                password: tbIuser.Password,
                fullName: tbIuser.FullName,
                email: tbIuser.Email,
                phoneNumber: tbIuser.PhoneNumber,
                gender: tbIuser.Gender == Gender.Male?1: tbIuser.Gender == Gender.Female?2: tbIuser.Gender == Gender.Other?3:0,
                role: tbIuser.Role == Role.Administrator ? 1 : tbIuser.Role == Role.User ?2:0,
                salt: tbIuser.Salt,
                dateOfBirth: tbIuser.DateOfBirth.ToString()
                );

            return(userForJson);
        }
        public static TbIuser ConvertJsonUserToUser(UserForJson userForJson)
        {
            DateTime dateTime = new DateTime();

            DateTime.TryParse(userForJson.DateOfBirth, out dateTime);
            TbIuser tbIuser = new TbIuser(
                username: userForJson.Username,
                password: userForJson.Password,
                fullName: userForJson.FullName,
                email: userForJson.Email,
                phoneNumber: userForJson.PhoneNumber,
                gender: userForJson.Gender == 1?Gender.Male: userForJson.Gender == 2?Gender.Female: userForJson.Gender == 3?Gender.Other:0,
                role: userForJson.Role == 1?Role.Administrator:userForJson.Role == 2?Role.User:0,
                salt: userForJson.Salt,
                dateOfBirth: dateTime
                );

            return(tbIuser);
        }
        public string Post([FromBody] UserForJson value)
        {
            //check User have existing in database
            if (!dbContext.TbIusers.Any(user => user.Username.Equals(value.Username)))
            {
                TbIuser         tbIuser         = UserConverter.ConvertJsonUserToUser(value);
                ValidatorResult validatorResult = UserValidator.IsValidUser(tbIuser);
                if (!validatorResult.IsValid)
                {
                    return(JsonConvert.SerializeObject(validatorResult.ValidationMessage));
                }

                TbIuser user = new TbIuser();
                user.Username    = tbIuser.Username;
                user.Email       = tbIuser.Email;
                user.DateOfBirth = tbIuser.DateOfBirth;
                user.FullName    = tbIuser.FullName;
                user.Gender      = tbIuser.Gender;
                user.Role        = Role.User;
                user.PhoneNumber = tbIuser.PhoneNumber;
                user.Salt        = Convert.ToBase64String(Common.GetRandomSalt(16));
                user.Password    = Convert.ToBase64String(Common.SaltHashPassword(
                                                              Encoding.ASCII.GetBytes(tbIuser.Password),
                                                              Convert.FromBase64String(user.Salt)));

                //Add to DB
                try
                {
                    dbContext.Add(user);
                    dbContext.SaveChanges();
                    return(JsonConvert.SerializeObject("Register successfully"));
                }
                catch (Exception e)
                {
                    return(JsonConvert.SerializeObject(e.Message));
                }
            }
            else
            {
                return(JsonConvert.SerializeObject("User is existing in Database."));
            }
        }