You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
159 lines
2.8 KiB
159 lines
2.8 KiB
// 1.question
|
|
|
|
let personAccount = {
|
|
firstName: "satya",
|
|
lastName: "surendra",
|
|
incomes: 0,
|
|
expenses: 0,
|
|
totalIncome: function () {
|
|
return;
|
|
},
|
|
totalExpenses: function () {
|
|
return;
|
|
},
|
|
accountInfo: function () {
|
|
return `Name : ${this.firstName} ${this.lastName}\nIncome: ${this.incomes}\nExpense: ${this.expenses}`;
|
|
},
|
|
addIncome: function () {
|
|
return;
|
|
},
|
|
addExpense: function () {
|
|
return;
|
|
},
|
|
accountBalance: function () {
|
|
return;
|
|
},
|
|
};
|
|
|
|
console.log(personAccount.accountInfo());
|
|
|
|
let users = [
|
|
{
|
|
_id: "ab12ex",
|
|
username: "Alex",
|
|
email: "alex@alex.com",
|
|
password: "123123",
|
|
createdAt: "08/01/2020 9:00 AM",
|
|
isLoggedIn: false,
|
|
},
|
|
{
|
|
_id: "fg12cy",
|
|
username: "Asab",
|
|
email: "asab@asab.com",
|
|
password: "123456",
|
|
createdAt: "08/01/2020 9:30 AM",
|
|
isLoggedIn: true,
|
|
},
|
|
{
|
|
_id: "zwf8md",
|
|
username: "Brook",
|
|
email: "brook@brook.com",
|
|
password: "123111",
|
|
createdAt: "08/01/2020 9:45 AM",
|
|
isLoggedIn: true,
|
|
},
|
|
{
|
|
_id: "eefamr",
|
|
username: "Martha",
|
|
email: "martha@martha.com",
|
|
password: "123222",
|
|
createdAt: "08/01/2020 9:50 AM",
|
|
isLoggedIn: false,
|
|
},
|
|
{
|
|
_id: "ghderc",
|
|
username: "Thomas",
|
|
email: "thomas@thomas.com",
|
|
password: "123333",
|
|
createdAt: "08/01/2020 10:00 AM",
|
|
isLoggedIn: false,
|
|
},
|
|
];
|
|
|
|
const products = [
|
|
{
|
|
_id: "eedfcf",
|
|
name: "mobile phone",
|
|
description: "Huawei Honor",
|
|
price: 200,
|
|
ratings: [
|
|
{ userId: "fg12cy", rate: 5 },
|
|
{ userId: "zwf8md", rate: 4.5 },
|
|
],
|
|
likes: [],
|
|
},
|
|
{
|
|
_id: "aegfal",
|
|
name: "Laptop",
|
|
description: "MacPro: System Darwin",
|
|
price: 2500,
|
|
ratings: [],
|
|
likes: ["fg12cy"],
|
|
},
|
|
{
|
|
_id: "hedfcg",
|
|
name: "TV",
|
|
description: "Smart TV:Procaster",
|
|
price: 400,
|
|
ratings: [{ userId: "fg12cy", rate: 5 }],
|
|
likes: ["fg12cy"],
|
|
},
|
|
];
|
|
|
|
// 2.question
|
|
|
|
let signUp = (name) => {
|
|
let len = users.filter((user) => user.username === name).length;
|
|
if (len) {
|
|
console.log(`This user already exits `);
|
|
} else {
|
|
users.push({
|
|
_id: name,
|
|
username: name,
|
|
email: `${name}@${name}.com`,
|
|
password: `${name}`,
|
|
createdAt: new Date(),
|
|
isLoggedIn: true,
|
|
});
|
|
}
|
|
};
|
|
|
|
// 2.b.question
|
|
|
|
let signIn = (name, password) => {
|
|
let user = users.filter(
|
|
(user) => user.username === name && user.password === password
|
|
);
|
|
if (user.length) {
|
|
user.isLoggedIn = true;
|
|
console.log(`Login successful`);
|
|
} else {
|
|
console.log(`Invalid username or password`);
|
|
}
|
|
};
|
|
|
|
// 3.a.question
|
|
|
|
let rateProduct = (productId, userId, rate) => {
|
|
let product = products.find((p) => {
|
|
return p._id === productId;
|
|
});
|
|
product.ratings.push({
|
|
userId: userId,
|
|
rate: rate,
|
|
});
|
|
};
|
|
|
|
// 3.b.question
|
|
|
|
let avgRateing = (productId) => {
|
|
let product = products.find((p) => {
|
|
return p._id === productId;
|
|
});
|
|
let totalRate = 0;
|
|
product.ratings.forEach((p) => {
|
|
totalRate = p.rate + totalRate;
|
|
});
|
|
return totalRate / product.ratings.length;
|
|
};
|