Move email entry to the review page #37

Merged
bilal.catic merged 1 commits from move-email-entry-to-the-review-page into master 2019-10-09 15:42:33 +02:00
5 changed files with 100 additions and 167 deletions

View File

@@ -1,15 +1,11 @@
const { currentSearchRequest } = require("../helpers/url");
const { isValidEmail } = require("../helpers/email");
const {
notifyForNewSearchRequest
} = require("../services/notificationService");
const { AD_CATEGORY } = require("../common/enums");
const getQueryReview = async (req, res) => {
const title = "Da li je ovo to što ste tražili ?";
const searchRequest = await currentSearchRequest(req);
const nextStep = req.query.nextStep;
if (!searchRequest || !searchRequest.dataValues) {
return null;
}
const getQueryReviewData = searchRequest => {
const {
id,
realEstateType,
@@ -39,7 +35,7 @@ const getQueryReview = async (req, res) => {
const priceTitle =
priceMin && priceMax ? `${priceMin} - ${priceMax} KM` : "-";
const queryReviewData = [
return [
{
id: "realEstateType",
title: realEstateTypeTitle,
@@ -66,17 +62,66 @@ const getQueryReview = async (req, res) => {
url: `/cijena/${id}?nextStep=pregled`
}
];
};
const getQueryReview = async (req, res) => {
const searchRequest = await currentSearchRequest(req);
if (!searchRequest || !searchRequest.dataValues) {
return null;
}
const title = "Da li je ovo to što ste tražili ?";
const nextStep = req.query.nextStep;
const error = req.query.error;
const queryReviewData = getQueryReviewData(searchRequest);
res.render("queryReview", {
nextStep,
queryReviewData,
title
title,
error
});
};
const postQueryReview = async (req, res) => {
const searchRequest = await currentSearchRequest(req);
const nextStep = req.query.nextStep || `/posalji/${searchRequest.id}`;
if (!searchRequest || !searchRequest.dataValues) {
return null;
}
const nextStep = req.query.nextStep || "/ponovo";
const emailInput = req.body.email;
const emailConfirmInput = req.body.confirmEmail;
const title = "Da li je ovo to što ste tražili ?";
const queryReviewData = getQueryReviewData(searchRequest);
if (emailInput !== emailConfirmInput) {
const error = "Greška ! Unešeni emailovi nisu isti";
res.render("queryReview", {
error,
title,
queryReviewData
});
return;
}
if (!isValidEmail(emailInput)) {
const error = "Greška ! Unesite validan email";
res.render("queryReview", {
error,
title,
queryReviewData
});
return;
}
searchRequest.email = emailInput;
searchRequest.subscribed = true;
await searchRequest.save();
await notifyForNewSearchRequest(searchRequest);
res.redirect(nextStep);
};

View File

@@ -1,58 +0,0 @@
const { currentSearchRequest } = require("../helpers/url");
const { isValidEmail } = require("../helpers/email");
const {
notifyForNewSearchRequest
} = require("../services/notificationService");
const getQuerySubmit = async (req, res) => {
const title = "Upišite vaš e-mail";
const nextStep = req.query.nextStep;
const error = req.query.error;
res.render("querySubmit", {
nextStep,
error,
title
});
};
const postQuerySubmit = async (req, res) => {
const searchRequest = await currentSearchRequest(req);
const nextStep = req.query.nextStep || "/ponovo";
const emailInput = req.body.email;
const emailConfirmInput = req.body.confirm;
const title = "Upišite vaš e-mail";
let error = "Greška ! Unesite validan email";
if (emailInput !== emailConfirmInput) {
error = "Greška ! Unešeni emailovi nisu isti";
res.render("querySubmit", {
error,
title
});
return;
}
if (!isValidEmail(emailInput)) {
error = "Greška ! Unesite validan email";
res.render("querySubmit", {
error,
title
});
return;
}
searchRequest.email = emailInput;
searchRequest.subscribed = true;
await searchRequest.save();
await notifyForNewSearchRequest(searchRequest);
res.redirect(nextStep);
};
module.exports = {
getQuerySubmit,
postQuerySubmit
};

View File

@@ -14,10 +14,6 @@ const {
getQueryReview,
postQueryReview
} = require("../controllers/queryReview");
const {
getQuerySubmit,
postQuerySubmit
} = require("../controllers/querySubmit");
const { getGoAgain } = require("../controllers/goAgain");
const { getLocation, postLocation } = require("../controllers/location");
const { getUnsubscribe } = require("../controllers/unsubscribe");
@@ -48,9 +44,6 @@ router.post("/cijena/:searchRequestId", postPrice);
router.get("/pregled/:searchRequestId", getQueryReview);
router.post("/pregled/:searchRequestId", postQueryReview);
router.get("/posalji/:searchRequestId", getQuerySubmit);
router.post("/posalji/:searchRequestId", postQuerySubmit);
router.get("/odjava/:searchRequestId", getUnsubscribe);
router.get("/ponovo", getGoAgain);

View File

@@ -2,26 +2,50 @@
<% include partials/navBar %>
<form method="POST" id="form-queryreview">
<div class="row center-align">
<ul class="collection with-header">
<% for(const stepData of queryReviewData) { %>
<li class="collection-item" >
<div id="<%= stepData.id %>" ><%= stepData.title || '-' %>
<a href="<%= stepData.url %>" class="secondary-content">
<i class="material-icons">edit</i>
</a>
<div class="row center-align">
<ul class="collection with-header">
<% for(const stepData of queryReviewData) { %>
<li class="collection-item" >
<div id="<%= stepData.id %>" ><%= stepData.title || '-' %>
<a href="<%= stepData.url %>" class="secondary-content">
<i class="material-icons">edit</i>
</a>
</div>
</li>
<% } %>
</ul>
</div>
<div class="row center-align">
<div class="col">
<input id="email" name="email" type="email" placeholder="vas.email@mail.com" required size="250" />
</div>
</li>
<% } %>
</ul>
</div>
<div class="row">
<div class="col s6 push-s3">
<a id="submit" href="#" class="welcome-center-button waves-effect waves-light btn">
To je to
</a>
</div>
</div>
</div>
<div class="row center-align">
<div class="col">
<input id="confirmEmail" name="confirmEmail" type="email" placeholder="potvrdite.email@mail.com" required size="250" />
</div>
</div>
<div class="row center-align">
<div class="col">
<h6 id="error-label-email" style="color: red"><%= error %> </h6>
</div>
</div>
<div class="row center-align">
<div class="col">
<p>* U svakom trenutku možete prekinuti slanje objava kroz link u e-mailu</p>
</div>
</div>
<div class="row center-align">
<div class="col s6 push-s3">
<a id="submit" href="#" class="welcome-center-button waves-effect waves-light btn">
Javi mi
</a>
</div>
</div>
</form>
<script>

View File

@@ -1,71 +0,0 @@
<!--suppress HtmlUnknownAnchorTarget -->
<% include partials/navBar %>
<div class="row center-align">
<h6>Da Vam javimo kada se Vaša željena nekretnina pojavi u oglasima, upišite vaš e-mail</h6>
</div>
<form method="POST" id="form-submitquery">
<div class="row center-align">
<div class="col s6 push-s3">
<input id="email" name="email" type="email" placeholder="vas.email@mail.com" required size="250" />
</div>
</div>
<div class="row">
<div class="col s6 push-s3">
<h6 id="error-lable-email" style="color: red"><%= error %> </h6>
</div>
</div>
<div class="row center-align">
<div class="col s6 push-s3">
<input id="confirm" name="confirm" type="email" placeholder="potvrdite.email@mail.com" required size="250" />
</div>
</div>
<div class="row">
<div class="col s6 push-s3">
<h6 id="error-lable-email-confirm" style="color: red"></h6>
</div>
</div>
<div class="row">
<div class="col s6 push-s3">
<a id="submit" href="#" class="welcome-center-button waves-effect waves-light btn">
Javi mi
</a>
</div>
</div>
<div class="row">
<div class="col s6 push-s3">
<p>* U svakom trenutku možete prekinuti slanje objava kroz link u e-mailu</p>
</div>
</div>
</form>
<script>
$(document).ready(() => {
$("#submit").click(() => {
const emailField = document.getElementById('email');
const emailConfirmField = document.getElementById('confirm');
const errorMessage = "Greška ! Unedite validan email";
$("#error-lable-email").text("");
$("#error-lable-email-confirm").text("");
if (!emailField.validity.valid) {
$("#error-lable-email").text(errorMessage);
return
}
if (!emailConfirmField.validity.valid) {
$("#error-lable-email-confirm").text(errorMessage);
return
}
$("#form-submitquery").submit();
});
});
</script>