2019-09-13 11:08:45 +02:00
|
|
|
const { currentSearchRequest } = require("../helpers/url");
|
|
|
|
|
const { createSearchRequest } = require("../helpers/db/searchRequest");
|
2019-05-21 15:25:28 +02:00
|
|
|
|
2019-10-30 22:13:22 +01:00
|
|
|
const { AD_CATEGORY, AD_TYPE } = require("../common/enums");
|
|
|
|
|
|
|
|
|
|
const getRealEstateTypes = async (req, res) => {
|
|
|
|
|
const searchRequest = await currentSearchRequest(req);
|
2019-04-14 06:01:37 +02:00
|
|
|
|
2019-09-05 11:14:54 +02:00
|
|
|
const title = "Koju nekretninu tražite?";
|
2019-10-30 22:13:22 +01:00
|
|
|
let selectedAdType = AD_TYPE.AD_TYPE_SALE.id;
|
2020-02-03 13:11:40 +01:00
|
|
|
const labelAdType = [AD_TYPE.AD_TYPE_SALE.title, AD_TYPE.AD_TYPE_RENT.title];
|
2019-10-30 22:13:22 +01:00
|
|
|
if (
|
|
|
|
|
searchRequest &&
|
|
|
|
|
searchRequest.adType &&
|
|
|
|
|
searchRequest.adType === AD_TYPE.AD_TYPE_RENT.stringId
|
|
|
|
|
) {
|
|
|
|
|
selectedAdType = AD_TYPE.AD_TYPE_RENT.id;
|
|
|
|
|
}
|
2019-10-24 17:43:14 +02:00
|
|
|
const realEstateTypes = Object.keys(AD_CATEGORY)
|
|
|
|
|
.map(category => AD_CATEGORY[category])
|
|
|
|
|
.filter(category => category.title);
|
|
|
|
|
|
2019-10-30 22:13:22 +01:00
|
|
|
res.render("realEstateType", {
|
|
|
|
|
selectedAdType,
|
2020-02-03 13:11:40 +01:00
|
|
|
labelAdType,
|
2019-10-30 22:13:22 +01:00
|
|
|
realEstateTypes,
|
|
|
|
|
title,
|
|
|
|
|
AD_TYPE
|
|
|
|
|
});
|
2019-05-16 19:40:26 +02:00
|
|
|
};
|
2019-03-26 05:06:15 +01:00
|
|
|
|
2019-05-21 15:25:28 +02:00
|
|
|
const postRealEstateTypes = async (req, res) => {
|
2019-09-13 11:08:45 +02:00
|
|
|
const searchRequest = await currentSearchRequest(req);
|
|
|
|
|
|
2019-10-30 22:13:22 +01:00
|
|
|
const adType = parseInt(req.body.adType);
|
|
|
|
|
|
|
|
|
|
const adTypeStringIds = {
|
|
|
|
|
[AD_TYPE.AD_TYPE_SALE.id]: AD_TYPE.AD_TYPE_SALE.stringId,
|
|
|
|
|
[AD_TYPE.AD_TYPE_RENT.id]: AD_TYPE.AD_TYPE_RENT.stringId
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
const adTypeStringId =
|
|
|
|
|
adTypeStringIds[adType] || AD_TYPE.AD_TYPE_SALE.stringId;
|
|
|
|
|
|
2019-10-28 10:38:31 +01:00
|
|
|
const validRealEstateTypes = Object.keys(AD_CATEGORY).filter(
|
|
|
|
|
category => !!AD_CATEGORY[category].title
|
|
|
|
|
);
|
|
|
|
|
|
2019-09-13 11:08:45 +02:00
|
|
|
const selectedRealEstateType = req.body.realEstateType || null;
|
2019-10-28 10:38:31 +01:00
|
|
|
if (validRealEstateTypes.indexOf(selectedRealEstateType) === -1) {
|
|
|
|
|
res.render("notFound", { title: " " });
|
|
|
|
|
return;
|
|
|
|
|
}
|
2019-05-21 15:25:28 +02:00
|
|
|
|
2019-09-10 07:43:43 +02:00
|
|
|
const nextStepPage = req.query.nextStep || "lokacija";
|
2019-05-21 15:25:28 +02:00
|
|
|
|
2019-09-13 11:08:45 +02:00
|
|
|
let nextStepUrl = "";
|
|
|
|
|
if (searchRequest && searchRequest.id) {
|
|
|
|
|
nextStepUrl = `/${nextStepPage}/${searchRequest.id}`;
|
2019-10-30 22:13:22 +01:00
|
|
|
searchRequest.adType = adTypeStringId;
|
2019-09-13 11:08:45 +02:00
|
|
|
searchRequest.realEstateType = selectedRealEstateType;
|
2019-09-13 14:30:54 +02:00
|
|
|
|
|
|
|
|
await searchRequest.save();
|
2019-05-21 15:25:28 +02:00
|
|
|
} else {
|
2019-09-13 11:08:45 +02:00
|
|
|
try {
|
|
|
|
|
const newSearchRequest = await createSearchRequest({
|
2019-10-30 22:13:22 +01:00
|
|
|
adType: adTypeStringId,
|
2019-09-13 11:08:45 +02:00
|
|
|
realEstateType: selectedRealEstateType
|
2019-09-05 11:14:54 +02:00
|
|
|
});
|
2019-09-13 11:08:45 +02:00
|
|
|
|
|
|
|
|
nextStepUrl = `/${nextStepPage}/${newSearchRequest.id}`;
|
|
|
|
|
} catch (error) {
|
|
|
|
|
console.log(error);
|
|
|
|
|
nextStepUrl = `/`;
|
|
|
|
|
}
|
2019-05-21 15:25:28 +02:00
|
|
|
}
|
2019-09-13 11:08:45 +02:00
|
|
|
res.redirect(nextStepUrl);
|
2019-05-16 19:40:26 +02:00
|
|
|
};
|
2019-04-16 06:27:11 +02:00
|
|
|
|
2019-05-16 19:40:26 +02:00
|
|
|
module.exports = {
|
2019-05-15 15:27:10 +02:00
|
|
|
getRealEstateTypes,
|
|
|
|
|
postRealEstateTypes
|
2019-03-26 05:06:15 +01:00
|
|
|
};
|