server 1.0.3
This commit is contained in:
@@ -39,6 +39,8 @@ const dishSchema = mongoose.Schema({
|
|||||||
ingredients: {
|
ingredients: {
|
||||||
type: [String],
|
type: [String],
|
||||||
},
|
},
|
||||||
|
glicemicIndex: String,
|
||||||
|
kCal: String,
|
||||||
vegan: Boolean,
|
vegan: Boolean,
|
||||||
vegetarian: Boolean,
|
vegetarian: Boolean,
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -50,11 +50,10 @@ const restaurantSchema = mongoose.Schema({
|
|||||||
},
|
},
|
||||||
links: {
|
links: {
|
||||||
facebook: String,
|
facebook: String,
|
||||||
twitter: String,
|
|
||||||
instagram: String,
|
instagram: String,
|
||||||
www: String,
|
www: String,
|
||||||
},
|
},
|
||||||
phone: Number,
|
phone: String,
|
||||||
hidden: Boolean,
|
hidden: Boolean,
|
||||||
subscriptionActive: Boolean,
|
subscriptionActive: Boolean,
|
||||||
subscriptionStarted: Date,
|
subscriptionStarted: Date,
|
||||||
|
|||||||
@@ -38,7 +38,6 @@ const userSchema = mongoose.Schema({
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
restaurants: [mongoose.Types.ObjectId],
|
restaurants: [mongoose.Types.ObjectId],
|
||||||
trialUsed: Boolean,
|
|
||||||
});
|
});
|
||||||
|
|
||||||
export default mongoose.model("User", userSchema);
|
export default mongoose.model("User", userSchema);
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ const uploadStrategy = multer({
|
|||||||
}
|
}
|
||||||
cb(null, true);
|
cb(null, true);
|
||||||
},
|
},
|
||||||
limits: { fileSize: 4000000 },
|
limits: { fileSize: 2000000 },
|
||||||
}).single("menuiImage");
|
}).single("menuiImage");
|
||||||
|
|
||||||
// POST
|
// POST
|
||||||
|
|||||||
@@ -12,6 +12,7 @@ import {
|
|||||||
handleError,
|
handleError,
|
||||||
validateUserToken,
|
validateUserToken,
|
||||||
verifyRestaurantAccess,
|
verifyRestaurantAccess,
|
||||||
|
newError,
|
||||||
} from "../services/services.js";
|
} from "../services/services.js";
|
||||||
import Restaurant from "../models/restaurant.js";
|
import Restaurant from "../models/restaurant.js";
|
||||||
|
|
||||||
@@ -35,7 +36,9 @@ router.post("/", async (req, res) => {
|
|||||||
try {
|
try {
|
||||||
const token = req.headers["x-auth-token"];
|
const token = req.headers["x-auth-token"];
|
||||||
const user = validateUserToken(token);
|
const user = validateUserToken(token);
|
||||||
const restaurant = await createRestaurant(req.body);
|
const restaurant = await createRestaurant(req.body).catch((err) => {
|
||||||
|
throw newError("Nie udało się zapisać zdjęcia.", 500);
|
||||||
|
});
|
||||||
await restaurant.save();
|
await restaurant.save();
|
||||||
await addRestaurantToUser(user, restaurant);
|
await addRestaurantToUser(user, restaurant);
|
||||||
res.sendStatus(201);
|
res.sendStatus(201);
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ router.post("/login", async (req, res) => {
|
|||||||
}
|
}
|
||||||
const user = await fetchUser(req.body.email);
|
const user = await fetchUser(req.body.email);
|
||||||
await checkPassword(req.body.password, user.password);
|
await checkPassword(req.body.password, user.password);
|
||||||
const safeUser = prepareSafeUser(user);
|
const safeUser = await prepareSafeUser(user);
|
||||||
var token = generateAuthToken(safeUser);
|
var token = generateAuthToken(safeUser);
|
||||||
res.header("x-auth-token", token).status(202).send(safeUser);
|
res.header("x-auth-token", token).status(202).send(safeUser);
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ import mongoose from "mongoose";
|
|||||||
import Dish from "../models/dish.js";
|
import Dish from "../models/dish.js";
|
||||||
import User from "../models/users.js";
|
import User from "../models/users.js";
|
||||||
import Restaurant from "../models/restaurant.js";
|
import Restaurant from "../models/restaurant.js";
|
||||||
|
import { fetchMultipleRestaurants } from "./databaseServices.js";
|
||||||
|
|
||||||
export async function createUser(request) {
|
export async function createUser(request) {
|
||||||
const password = await hashPass(request.body.password);
|
const password = await hashPass(request.body.password);
|
||||||
@@ -62,7 +63,11 @@ export async function createRestaurant(request, oldRestaurant) {
|
|||||||
workingHours: request.workingHours,
|
workingHours: request.workingHours,
|
||||||
description: sanitizer.sanitize.keepUnicode(request.description),
|
description: sanitizer.sanitize.keepUnicode(request.description),
|
||||||
tags: request.tags,
|
tags: request.tags,
|
||||||
links: request.links,
|
links: {
|
||||||
|
facebook: request.facebook,
|
||||||
|
instagram: request.instagram,
|
||||||
|
www: request.www,
|
||||||
|
},
|
||||||
phone: request.phone,
|
phone: request.phone,
|
||||||
hidden: request.hidden,
|
hidden: request.hidden,
|
||||||
});
|
});
|
||||||
@@ -95,13 +100,17 @@ export async function createRestaurant(request, oldRestaurant) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export function prepareSafeUser(user) {
|
export async function prepareSafeUser(user) {
|
||||||
|
const restaurants = await fetchMultipleRestaurants(user.restaurants);
|
||||||
const safeUser = {
|
const safeUser = {
|
||||||
firstname: user.firstname,
|
firstname: user.firstname,
|
||||||
lastname: user.lastname,
|
lastname: user.lastname,
|
||||||
email: user.email,
|
email: user.email,
|
||||||
id: user._id,
|
id: user._id,
|
||||||
restaurants: user.restaurants,
|
restaurants: restaurants,
|
||||||
|
NIP: user.billing.NIP,
|
||||||
|
adress: user.billing.adress,
|
||||||
|
companyName: user.billing.companyName,
|
||||||
};
|
};
|
||||||
return safeUser;
|
return safeUser;
|
||||||
}
|
}
|
||||||
@@ -129,6 +138,8 @@ export async function createDish(dish, restaurantId, generateId) {
|
|||||||
sesame: dish.allergens.sesame,
|
sesame: dish.allergens.sesame,
|
||||||
},
|
},
|
||||||
ingredients: dish.ingredients,
|
ingredients: dish.ingredients,
|
||||||
|
glicemicIndex: dish.glicemicIndex,
|
||||||
|
kCal: dish.kCal,
|
||||||
vegan: dish.vegan,
|
vegan: dish.vegan,
|
||||||
vegetarian: dish.vegetarian,
|
vegetarian: dish.vegetarian,
|
||||||
});
|
});
|
||||||
@@ -152,6 +163,8 @@ export async function createDish(dish, restaurantId, generateId) {
|
|||||||
sesame: dish.allergens.sesame,
|
sesame: dish.allergens.sesame,
|
||||||
},
|
},
|
||||||
ingredients: dish.ingredients,
|
ingredients: dish.ingredients,
|
||||||
|
glicemicIndex: dish.glicemicIndex,
|
||||||
|
kCal: dish.kCal,
|
||||||
vegan: dish.vegan,
|
vegan: dish.vegan,
|
||||||
vegetarian: dish.vegetarian,
|
vegetarian: dish.vegetarian,
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -105,15 +105,21 @@ export async function renewSubscription(restaurantId, monthsToAdd) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export async function fetchRestaurant(id) {
|
export async function fetchRestaurant(id) {
|
||||||
let data;
|
const data = await Restaurant.findById(id).catch((e) => {
|
||||||
await Restaurant.findById(id, (err, result) => {
|
|
||||||
data = result;
|
|
||||||
}).catch((e) => {
|
|
||||||
throw newError("Nie udało się pobrać restauracji.", 500);
|
throw newError("Nie udało się pobrać restauracji.", 500);
|
||||||
});
|
});
|
||||||
return data;
|
return data;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export async function fetchMultipleRestaurants(idArray) {
|
||||||
|
let data = [];
|
||||||
|
for (const id of idArray) {
|
||||||
|
let response = await fetchRestaurant(id);
|
||||||
|
data.push(response);
|
||||||
|
}
|
||||||
|
return data;
|
||||||
|
}
|
||||||
|
|
||||||
export async function fetchAllDishesForRestaurant(restaurant) {
|
export async function fetchAllDishesForRestaurant(restaurant) {
|
||||||
let dishes = [];
|
let dishes = [];
|
||||||
for (const dish of restaurant.dishes) {
|
for (const dish of restaurant.dishes) {
|
||||||
|
|||||||
Reference in New Issue
Block a user