Browse Source

Merge branch 'feature/19315_Customer-Registration' into feature/19315_Customer-Registration-new

# Conflicts:
#	CustomerOnlineV2/CustomerOnlineV2/Controllers/CustomerController.cs
#	CustomerOnlineV2/CustomerOnlineV2/Views/Customer/CustomerRegistration.cshtml
feature/19315_Customer-Registration-new
shakun 12 months ago
parent
commit
cd272fb61c
  1. 4
      CustomerOnlineV2/CustomerOnlineV2.Business/Business/AccountBusiness/AccountBusiness.cs
  2. 2
      CustomerOnlineV2/CustomerOnlineV2.Business/Business/AccountBusiness/IAccountBusiness.cs
  3. 11
      CustomerOnlineV2/CustomerOnlineV2.Common/Models/AccountModel/AccountModel.cs
  4. 23
      CustomerOnlineV2/CustomerOnlineV2.Repository/Repository/AccountRepository/AccountRepository.cs
  5. 1
      CustomerOnlineV2/CustomerOnlineV2.Repository/Repository/AccountRepository/IAccountRepository.cs
  6. 37
      CustomerOnlineV2/CustomerOnlineV2/Controllers/AccountController.cs
  7. 2
      CustomerOnlineV2/CustomerOnlineV2/Views/Account/Index.cshtml
  8. 120
      CustomerOnlineV2/CustomerOnlineV2/Views/Account/ResetPassword.cshtml
  9. 48
      CustomerOnlineV2/CustomerOnlineV2/Views/ReceiverInformation/Receiver.cshtml

4
CustomerOnlineV2/CustomerOnlineV2.Business/Business/AccountBusiness/AccountBusiness.cs

@ -30,5 +30,9 @@ namespace CustomerOnlineV2.Business.Business.AccountBusiness
return await _accountRepo.ChangePassword(model, logindetails);
}
public async Task<CommonResponse> PasswordReset(PasswordResetModel model, LoginResponse logindetails)
{
return await _accountRepo.PasswordReset(model, logindetails);
}
}
}

2
CustomerOnlineV2/CustomerOnlineV2.Business/Business/AccountBusiness/IAccountBusiness.cs

@ -7,6 +7,6 @@ namespace CustomerOnlineV2.Business.Business.AccountBusiness
{
Task<LoginResponse> Login(LoginModel model);
Task<CommonResponse> ChangePassword(ForceChangePasswordModel model, LoginResponse logindetails);
//Task<CommonResponse> PasswordReset(PasswordResetModel model, LoginResponse logindetails);
Task<CommonResponse> PasswordReset(PasswordResetModel model, LoginResponse logindetails);
}
}

11
CustomerOnlineV2/CustomerOnlineV2.Common/Models/AccountModel/AccountModel.cs

@ -1,4 +1,6 @@
namespace CustomerOnlineV2.Common.Models.AccountModel
using System.ComponentModel.DataAnnotations;
using System.Text.Json.Serialization;
namespace CustomerOnlineV2.Common.Models.AccountModel
{
public class AccountModel
{
@ -20,6 +22,13 @@
public string? ConfirmNewPassword { get; set; }
public string? IpAddress { get; set; }
}
public class PasswordResetModel
{
public string? Username { get; set; }
public string? Dob { get; set; }
public string? IpAddress { get; set; }
public string? RandomPassword { get; set; }
}
public class LoginResponse : CommonResponse
{

23
CustomerOnlineV2/CustomerOnlineV2.Repository/Repository/AccountRepository/AccountRepository.cs

@ -92,5 +92,28 @@ namespace CustomerOnlineV2.Repository.Repository.AccountRepository
}
return await Task.FromResult(_response);
}
public async Task<CommonResponse> PasswordReset(PasswordResetModel model, LoginResponse logindetails)
{
CommonResponse _response = new CommonResponse();
try
{
var sql = "EXEC PROC_DYNAMIC_TABLE";
sql += " @Flag = " + _connHelper.FilterString("ForceChange");
sql += ",@UserEmail = " + _connHelper.FilterString(logindetails.UserName);
sql += ",@ipAddress = " + _connHelper.FilterString(model.IpAddress);
_logger.LogDebug("ACCOUNTREPOSITORY | CHANGEPASSWORD | SQL | " + sql);
return _connHelper.ParseDbResult(sql);
}
catch (Exception ex)
{
_response.ResponseCode = ResponseHelper.EXCEPTION;
_response.ResponseMessage = "Exception occured: " + ex.Message;
_logger.LogError("ACCOUNTREPOSITORY | LOGIN | EXCEPTION | " + JsonConvert.SerializeObject(_response));
}
return await Task.FromResult(_response);
}
}
}

1
CustomerOnlineV2/CustomerOnlineV2.Repository/Repository/AccountRepository/IAccountRepository.cs

@ -7,5 +7,6 @@ namespace CustomerOnlineV2.Repository.Repository.AccountRepository
{
Task<CommonResponse> ChangePassword(ForceChangePasswordModel model, LoginResponse logindetails);
Task<LoginResponse> Login(LoginModel model);
Task<CommonResponse> PasswordReset(PasswordResetModel model, LoginResponse logindetails);
}
}

37
CustomerOnlineV2/CustomerOnlineV2/Controllers/AccountController.cs

@ -147,5 +147,42 @@ namespace CustomerOnlineV2.Controllers
}
}
}
public async Task<IActionResult> ResetPassword()
{
return View();
}
[HttpPost]
[ValidateAntiForgeryToken]
public async Task<IActionResult> ResetPassword(PasswordResetModel model)
{
var logindetails = HttpContext.GetLoginDetails();
model.IpAddress = Utilities.GetIpAddressv2(HttpContext);
using (LogContext.PushProperty("DebugId", logindetails.UserName))
{
_logger.LogDebug("ACCOUNTCONTROLLER | FORCECHANGEPASSWORD | REQUEST | " + JsonConvert.SerializeObject(model));
if (string.IsNullOrEmpty(logindetails.UserName))
{
_logger.LogError("ACCOUNTCONTROLLER | FORCECHANGEPASSWORD | INVALID logindetails.UserName");
RedirectToAction("Index", "Account");
}
var response = await _accountBusiness.PasswordReset(model, logindetails);
Log.Debug("Change password response: " + JsonConvert.SerializeObject(response));
if (response.ResponseCode == ResponseHelper.SUCCESS)
{
Log.Debug("ACCOUNTCONTROLLER | CHANGEPASSWORD | REQUEST ARRIVED | " + logindetails.UserName);
HttpContext.SignOutAsync(CookieAuthenticationDefaults.AuthenticationScheme);
return RedirectToAction("Index", "Account");
}
else
{
ViewBag.ResponseCode = response.ResponseCode;
ViewBag.ResponseMessage = response.ResponseMessage;
_logger.LogError("ACCOUNTCONTROLLER | LOGIN | ERROR OCCURED | " + JsonConvert.SerializeObject(response));
return View();
}
}
}
}
}

2
CustomerOnlineV2/CustomerOnlineV2/Views/Account/Index.cshtml

@ -97,7 +97,7 @@
</div>
</div>
</form>
<div class="col-sm text-left mt-3">Forgot Password ? <a class="" href="forgot-password.html">You can reset your passowrd right away</a></div>
<div class="col-sm text-left mt-3">Forgot Password ? <a class="" href="/Account/ResetPassword">You can reset your passowrd right away</a></div>
<div class="text-5 text-left mt-5">Don't have an user ? </div>
<div class="mt-3"> Registration won't take more than 5 min, <a class="" href="/Customer/CustomerRegistration">Register Now</a></div>
</div>

120
CustomerOnlineV2/CustomerOnlineV2/Views/Account/ResetPassword.cshtml

@ -0,0 +1,120 @@
@model CustomerOnlineV2.Common.Models.AccountModel.PasswordResetModel
@{
Layout = "_Layout2";
}
<!DOCTYPE html>
<html lang="en">
<body>
<div id="main-wrapper">
<div id="content">
<!-- Who we are -->
<section class="section section-form-bg">
<div class="container">
<div class="row align-items-center">
<div class="col-md-7 pe-0">
<div class="contact-from-wrap">
<div class="sec-heading mb-5">
<h2 class="sec-title">Forgot Password</h2>
<div class="text-3"> Reset passowrd is simple, your can reset your password right away</div>
<p class="sec-subtitle"></p>
</div>
<form action="dashboard-new.html" id="reset-form" class="">
@* <form asp-controller="Account" id="reset-form" asp-action="ResetPassword" method="post" novalidate>*@ <div class="form-floating mb-3">
<input type="email" class="form-control" asp-for="Username" placeholder="name@example.com">
<label for="floatingInput">Email address</label>
</div>
<div class="col-lg-3 mt-4">
<div class="d-grid mb-5">
@* <button class="btn btn-primary btn-sumbit-blue" type="submit">Request for link</button> *@
<button type="submit" id="BtnReset" class="btn btn-lg btn-primary" style="width: 250px;">
<span class="resetText">Request For Link</span>&nbsp;<div class="spinner-border text-success loading" role="status" style="display:none;"></div>
</button>
</div>
</div>
</form>
<div class="mt-3"> Dont have username ? Registration won't take more than 5 min, <a class="" href="register-new.html">Register Now</a></div>
<div class="mt-3"> Already registered, <a class="" href="/Account/Index">Login Now</a></div>
</div>
</div>
<div class="col-md-5 ps-0">
<div class="contact-info-wrap">
<address>
<i class="fas fa-envelope"></i>
<span>Email Address</span>
<a href="mailto:info@imelondon.co.uk">info@imelondon.co.uk</a>
</address>
<address>
<i class="fas fa-phone-alt"></i>
<span>Contact Numbers</span>
<a href="tel:+44 02088660307">+44 02088660307</a>
<a href="tel:+44 07984713677">+44 07984713677</a>
</address>
<address>
<i class="fas fa-map-marker-alt"></i>
<span>Our Head Office</span>
Pentax House, South Hill Avenue, South Harrow, London, HA2 0DU
</address>
</div>
</div>
</div>
</div>
</section>
<!-- Who we are end -->
</div>
</div>
<script type="text/javascript">
(function () {
'use strict'
// Fetch all the forms we want to apply custom Bootstrap validation styles to
var forms = document.querySelectorAll('#reset-form')
// Loop over them and prevent submission
Array.prototype.slice.call(forms)
.forEach(function (form) {
form.addEventListener('submit', function (event) {
if (!form.checkValidity()) {
event.preventDefault();
event.stopPropagation();
}
else {
event.preventDefault();
$('.resetText').hide();
$('#BtnReset').css('cursor', 'not-allowed');
$('.loading').show();
$('#BtnReset').prop('disabled', true);
$("#reset-form").submit();
}
form.classList.add('was-validated')
}, false)
})
})();
if ('@ViewBag.ResponseCode' != '') {
if ('@ViewBag.ResponseCode' != '0') {
iziToast.error({
title: 'Error',
message: '@ViewBag.ResponseMessage'
});
}
else {
iziToast.success({
title: 'OK',
message: '@ViewBag.ResponseMessage'
});
}
}
</script>
</body>
</html>

48
CustomerOnlineV2/CustomerOnlineV2/Views/ReceiverInformation/Receiver.cshtml

@ -3,7 +3,13 @@
@{
Layout = "_Layout2";
}
<style>
input::-webkit-outer-spin-button,
input::-webkit-inner-spin-button {
-webkit-appearance: none;
margin: 0;
}
</style>
<div id="content" class=" py-4">
<div class="container">
@ -100,7 +106,7 @@
<div class="col-md-3">
<div class="mb-3">
<label class="form-label">Mobile Number</label>
<input type="number" asp-for="Mobile" class="form-control required" placeholder="Mobile Number*" required/>
<input type="number" asp-for="Mobile" class="form-control required" placeholder="Mobile Number*" required; maxlength="10" pattern="\d{10}" />
</div>
</div>
@ -116,8 +122,8 @@
<select asp-for="paymentMode" class="form-select" required>
<option selected="selected" value="">Select Payment Mode</option>
<option value="1">Cash Payment</option>
<option value="15">Bank Deposit</option>
<option value="25">Mobile Wallet</option>
<option value="2">Bank Deposit</option>
<option value="13">Mobile Wallet</option>
</select>
@* <select class="form-select form-control" asp-for="paymentMode" asp-items="@CustomerOnlineV2.Helper.HelperClass.GetDropdownData("howtopay", true)" required> *@
@* <input type="email" asp-for="Email" class="form-control" placeholder="Email" asp-items="@CustomerOnlineV2.Helper.HelperClass.GetDropdownData("", true)" /> *@
@ -142,7 +148,7 @@
<div class="col-md-3">
<div class="mb-3">
<label class="form-label">ID Number</label>
<input type="datetime" asp-for="idNumber" class="form-control" placeholder="ID Number*" required/>
<input type="datetime" asp-for="idNumber" class="form-control" placeholder="ID Number*"/>
</div>
</div>
<div class="col-md-3">
@ -174,7 +180,7 @@
<div class="col-md-3">
<div class="mb-3">
<label class="form-label">Select Bank</label>
<select class="form-select form-control" asp-for="bankName" required>
<select class="form-select form-control" asp-for="bankName">
<option selected="selected" value="">Select Bank</option>
<option value="1163">AGRICULTURAL DEVELOPMENT BANK LTD</option>
@ -294,18 +300,28 @@
// $(document).ready(function () {
// debugger;
// $('#Country').change(function () {
// if ($(this).val() == '' {
// PopulateDDL('paymentMode', 'payoutMethods', $(this).val(), true, '');
// PopulateDDL('bankName', 'bankList', $(this).val(), true, '');
// }
// else {
// $('#paymentMode').empty();
// $('#bankName').empty();
// // debugger;
// // $('#Country').change(function () {
// // if ($(this).val() == '' {
// // PopulateDDL('paymentMode', 'payoutMethods', $(this).val(), true, '');
// // PopulateDDL('bankName', 'bankList', $(this).val(), true, '');
// // }
// // else {
// // $('#paymentMode').empty();
// // $('#bankName').empty();
// // }
// // });
// $('#paymentMode').change(function () {
// if ($(this).val() == '2' {
// $('#bankName').attr("bankName", "required -control");
// }
// });
// });
// }

Loading…
Cancel
Save