using BuddyFinance.Integration; using BuddyFinance.Integration.Models; using BuddyFinance.Integration.Models.Enums; using BuddyFinance.Integration.Models.Registration; using System.Collections.Generic; using System.Configuration; using System.Linq; using System.Web.Http; namespace BuddyFinance.WebApi.Controllers { /// /// Profile registrations /// [RoutePrefix("api/registration")] [AllowAnonymous] public class RegistrationController : BaseController { private readonly RegistrationIntegrator _registration = new RegistrationIntegrator(); /// /// Register a new profile /// /// Profile Details /// [HttpPost] [Route("register")] public RegistrationResult Register(NewProfileModel newProfile) { if (!ValidateOtp(newProfile.Otp, newProfile.ContactNumber).Result) { return new RegistrationResult { ErrorCode = (int)ResponseCodes.ValidationError, ErrorMessage = "Invalid OTP" }; } return _registration.Register(newProfile); //var result = _registration.Register(newProfile); //if (result.ErrorCode == (int)ResponseCodes.Success) //{ // //send profile verification email .. // var token_ = result.VerificationToken;// TokenManager.Generate(result.Result); // var url = ConfigurationManager.AppSettings["VerifyUrl"].Replace("_token", token_);// Url.Link("Default", new { Controller = "Registration", Action = "Verify", token = token_, profileNumber = result.Result }); // var mailDetails = new Dictionary // { // { "[names]", $"{newProfile.Name} {newProfile.Surname}" }, // { "[url]", url}, // { "[username]",newProfile.EmailAddress }, // { "[profileNumber]", result.Result } // }; // var templateText = System.IO.File.ReadAllText(ConfigurationManager.AppSettings["TemplatesPath"] + NotificationTempate.ProfileRegistered.ToString() + ".txt"); // var emailBody = mailDetails.Aggregate(templateText, (item, m) => item.Replace(m.Key, m.Value)); // _notifications.SendEmail(newProfile.EmailAddress, emailBody, "Account Created - Buddy Finance", null); //} //return result; } /// /// Sets rejected applications to pending /// /// /// [HttpPost] [Route("reapply")] public BaseResult ReApply(string profileNumber) { return _registration.ReApply(profileNumber); } /// /// Sends OTP for profile registration /// /// Profile contact number /// [HttpPost] [Route("sendotp")] public SendOtpResult SendOtp(string number) { return _registration.SendOtp(number); } /// /// Validates OTP on profile registration /// /// Validation OTP /// Profile contact number /// [HttpPost] [Route("validateotp")] public ValidateOtpResult ValidateOtp(string otp, string number) { return _registration.ValidateOtp(otp, number); } /// /// Verify/Activate profile registration /// /// /// [HttpPost] [Route("verify")] public VerifyRegistrationResult Verify(AccountVerificationModel model) { return _registration.VerifyRegistration(model.Token, model.ProfileNumber, model.Username); } } }