Exemplo n.º 1
0
        public IHttpActionResult Register(RegisterModel model)
        {
            ResponseModel       obj          = new ResponseModel();
            string              errorMessage = string.Empty;
            HttpResponseMessage response     = new HttpResponseMessage();

            try
            {
                if (!ModelState.IsValid)
                {
                    errorMessage = String.Join(",", ErrorHelper.GetErrorListFromModelState(ModelState));
                    return(BadRequest(errorMessage));
                }
                bool isEmail = ValidateEmail(model.Email);
                if (isEmail == false)
                {
                    return(ResponseMessage(Request.CreateErrorResponse(HttpStatusCode.InternalServerError, "Please give a valid email id.")));
                }
                var userDetailsByEmail = _userService.GetUserDetailsByEmail(model.Email);
                if (userDetailsByEmail == null)
                {
                }
                else
                {
                    return(ResponseMessage(Request.CreateErrorResponse(HttpStatusCode.InternalServerError, "This email is already taken.")));
                }
                bool isValid = ErrorHelper.IsValidPassword(model.Password);
                if (!isValid)
                {
                    return(ResponseMessage(Request.CreateErrorResponse(HttpStatusCode.Forbidden, "The password must contain atleast one number and one upper case character.")));
                }
                var keyNew   = PasswordAndTrevoHelper.GeneratePassword(30);
                var password = PasswordAndTrevoHelper.EncodePassword(model.Password, keyNew);
                //string salt = Crypto.GenerateSalt();
                //string hashedPassword = Crypto.HashPassword(salt + model.Password);

                //string salt = PasswordAndTrevoHelper.GetSaltString();
                //string finalPassword = model.Password + salt;
                //string hashedPassword = PasswordAndTrevoHelper.GetPasswordHashAndSalt(finalPassword);

                //string hashedPassword = PasswordAndTrevoHelper.HashPassword(model.Password);
                var        trevoId = PasswordAndTrevoHelper.GenerateTrevoId(model.Name);
                TrevoUsers user    = new TrevoUsers();
                user.Address    = model.Address == null ? string.Empty : model.Address;
                user.Country_Id = model.CountryId;
                user.DeviceId   = model.DeviceId;
                user.Dob        = model.Dob;
                user.Email_Id   = model.Email;
                user.Gender     = model.Gender;
                //user.UsersLanguageId = model.Id;
                user.Interests             = model.Interests == null ? string.Empty : model.Interests;
                user.LagLevel_ID           = model.LanguageLevelId;
                user.Name                  = model.Name;
                user.Password              = keyNew;
                user.PasswordHash          = password;
                user.QR_Code               = string.Empty;
                user.Self_Introduction     = model.SelfIntroduction == null ? string.Empty : model.SelfIntroduction;
                user.TravelDestination_CId = model.TravelDestination == null ? string.Empty : model.TravelDestination;
                user.TrevoId               = trevoId;
                user.IsVerified            = 0;
                user.ImagePath             = string.Empty;
                user.CreatedTime           = DateTime.UtcNow;
                user.ExternalAuthType      = model.ExternalAuthType == null ? string.Empty : model.ExternalAuthType;
                user.ExternalAuthUserId    = model.ExternalAuthUserId == null ? string.Empty : model.ExternalAuthUserId;

                //_userService.InsertUserDetails(user);
                //insert the user language first
                var isSuccess = _userService.InsertUserDetails(user);
                if (isSuccess.IsSuccess)
                {
                    UsersLanguage userLanguage = new UsersLanguage();
                    userLanguage.User_Id             = Convert.ToInt64(isSuccess.Message);
                    obj.UserID                       = userLanguage.User_Id;
                    userLanguage.Learning_LanguageId = model.LearningLanguageId;
                    userLanguage.Native_LanguageId   = model.NativeLanguageId;
                    _userLanguageService.InsertUserLanguageDetails(userLanguage);
                }
                else
                {
                    return(ResponseMessage(Request.CreateErrorResponse(HttpStatusCode.InternalServerError, "There is some error.")));
                }
                //send mail after successfull registration
                StreamReader reader   = new StreamReader(System.Web.Hosting.HostingEnvironment.MapPath("~/Content/EmailTemplate/RegistrationActivation.html"));
                string       readFile = reader.ReadToEnd();
                string       mailBody = "";
                mailBody = readFile;
                mailBody = mailBody.Replace("$$UserName$$", model.Name);
                string otpCode           = PasswordAndTrevoHelper.CreateRandomNumber(5);
                string encryptedUserName = SSTCryptographer.Encrypt(model.Name, SSTCryptographer.Key = "Activation");
                mailBody = mailBody.Replace(" $$OTPCode$$", otpCode);
                ReturnMsg mailResult = SendMail.SendEmail(InfoMail, model.Email, "Account Activation", mailBody);
                obj.Email = model.Email;
                obj.Name  = model.Name;
                var userLanDetails = _userLanguageService.GetLanguageListByUserId(obj.UserID);
                if (userLanDetails != null)
                {
                    var langDetails = _langService.GetLanguageDetailsById(userLanDetails.Native_LanguageId);
                    if (langDetails != null)
                    {
                        obj.NativeLangugae = langDetails.Abbreviation;
                    }
                    langDetails = _langService.GetLanguageDetailsById(userLanDetails.Learning_LanguageId);
                    if (langDetails != null)
                    {
                        obj.LearningLanguage = langDetails.Abbreviation;
                    }
                }
                obj.ImagePath = noImagePath;
            }
            catch (System.Exception e)
            {
                return(ResponseMessage(Request.CreateErrorResponse(HttpStatusCode.InternalServerError, e.Message)));
            }
            return(Ok(obj));
        }