parent
f8eaa5db1a
commit
027380fdf6
@ -0,0 +1,21 @@
|
||||
// Exercise 3 - Level 1
|
||||
|
||||
const dog = {}
|
||||
|
||||
dog.name = 'Montgomery'
|
||||
dog.legs = 4
|
||||
dog.colour = 'brown'
|
||||
dog.age = 2
|
||||
|
||||
dog.bark = function () {
|
||||
console.log('woof woof')
|
||||
}
|
||||
|
||||
dog.breed = 'Pug'
|
||||
dog.getDog = function () {
|
||||
console.log(dog)
|
||||
}
|
||||
|
||||
console.log(dog.name, dog.legs, dog.colour, dog.age, dog.breed)
|
||||
|
||||
dog.getDog()
|
@ -0,0 +1,89 @@
|
||||
// Exercise 3 - Level 2
|
||||
|
||||
const users = {
|
||||
Alex: {
|
||||
email: 'alex@alex.com',
|
||||
skills: ['HTML', 'CSS', 'JavaScript'],
|
||||
age: 20,
|
||||
isLoggedIn: false,
|
||||
points: 30
|
||||
},
|
||||
Asab: {
|
||||
email: 'asab@asab.com',
|
||||
skills: ['HTML', 'CSS', 'JavaScript', 'Redux', 'MongoDB', 'Express', 'React', 'Node'],
|
||||
age: 25,
|
||||
isLoggedIn: false,
|
||||
points: 50
|
||||
},
|
||||
Brook: {
|
||||
email: 'daniel@daniel.com',
|
||||
skills: ['HTML', 'CSS', 'JavaScript', 'React', 'Redux'],
|
||||
age: 30,
|
||||
isLoggedIn: true,
|
||||
points: 50
|
||||
},
|
||||
Daniel: {
|
||||
email: 'daniel@alex.com',
|
||||
skills: ['HTML', 'CSS', 'JavaScript', 'Python'],
|
||||
age: 20,
|
||||
isLoggedIn: false,
|
||||
points: 40
|
||||
},
|
||||
John: {
|
||||
email: 'john@john.com',
|
||||
skills: ['HTML', 'CSS', 'JavaScript', 'React', 'Redux', 'Node.js'],
|
||||
age: 20,
|
||||
isLoggedIn: true,
|
||||
points: 50
|
||||
},
|
||||
Thomas: {
|
||||
email: 'thomas@thomas.com',
|
||||
skills: ['HTML', 'CSS', 'JavaScript', 'React'],
|
||||
age: 20,
|
||||
isLoggedIn: false,
|
||||
points: 40
|
||||
},
|
||||
Paul: {
|
||||
email: 'paul@paul.com',
|
||||
skills: ['HTML', 'CSS', 'JavaScript', 'MongoDB', 'Express', 'React', 'Node'],
|
||||
age: 20,
|
||||
isLoggedIn: false,
|
||||
points: 40
|
||||
}
|
||||
}
|
||||
|
||||
getMostSkilled = function () {
|
||||
let maxSkillsPerson = null;
|
||||
let maxSkillsCount = 0;
|
||||
|
||||
Object.keys(users).forEach((person) => {
|
||||
const skillsCount = users[person].skills.length;
|
||||
if (skillsCount > maxSkillsCount) {
|
||||
maxSkillsPerson = person;
|
||||
maxSkillsCount = skillsCount;
|
||||
}
|
||||
});
|
||||
|
||||
console.log(maxSkillsPerson);
|
||||
}
|
||||
|
||||
getMostSkilled();
|
||||
|
||||
|
||||
const copyUsers = Object.assign({}, users)
|
||||
|
||||
const newUser = {
|
||||
email: 'newuser@example.com',
|
||||
skills: ['HTML', 'CSS', 'JavaScript'],
|
||||
age: 22,
|
||||
isLoggedIn: true,
|
||||
points: 35
|
||||
};
|
||||
|
||||
copyUsers['NewUser'] = newUser;
|
||||
|
||||
|
||||
const keys = Object.keys(copyUsers)
|
||||
const values = Object.values(copyUsers)
|
||||
const entries = Object.entries(copyUsers)
|
||||
|
@ -0,0 +1,106 @@
|
||||
// Exercise 3 - Level 3
|
||||
|
||||
const {users, products} = require('./users-products.js');
|
||||
|
||||
const currentDate = new Date()
|
||||
|
||||
const personAccount = {
|
||||
firstName: '',
|
||||
lastName: '',
|
||||
incomes: '',
|
||||
expenses: '',
|
||||
totalIncome: function () {
|
||||
|
||||
},
|
||||
totalExpense: function () {
|
||||
|
||||
},
|
||||
accountInfo: function () {
|
||||
|
||||
},
|
||||
addIncome: function () {
|
||||
|
||||
},
|
||||
addExpense: function () {
|
||||
|
||||
},
|
||||
accountBalance: function () {
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
formatDateTime = function () {
|
||||
const year = currentDate.getFullYear()
|
||||
const month = currentDate.getMonth()
|
||||
const day = currentDate.getDate()
|
||||
const hours = currentDate.getHours()
|
||||
const minutes = currentDate.getMinutes()
|
||||
let amPm = 'AM'
|
||||
let formatDay = day
|
||||
let formatMonth = month
|
||||
|
||||
if (hours > 11) {
|
||||
amPm = 'PM'
|
||||
} else amPm = 'AM'
|
||||
|
||||
if (day < 10) {
|
||||
formatDay = `0${day}`
|
||||
}
|
||||
|
||||
if (month < 10) {
|
||||
formatMonth = `0${month}`
|
||||
}
|
||||
|
||||
return `${formatDay}/${formatMonth}/${year} ${hours}:${minutes} ${amPm}`
|
||||
}
|
||||
|
||||
|
||||
|
||||
// a. Create a function called signUp which allows user to add to the collection. If user exists, inform the user that he has already an account.
|
||||
|
||||
signUp = function (email, password) {
|
||||
if (users.some((user) => user.email === email)) {
|
||||
console.log('An account with this email already exists!');
|
||||
} else {
|
||||
const username = email.slice(0, email.indexOf('@'));
|
||||
const capitalUsername = username[0].toUpperCase + username.slice(1)
|
||||
newUser = {
|
||||
_id: 'az17ds',
|
||||
username: capitalUsernamesername,
|
||||
email: email,
|
||||
password: password,
|
||||
createdAt: formatDateTime(),
|
||||
isLoggedIn: true,
|
||||
}
|
||||
users.push(newUser)
|
||||
console.log('New user created!')
|
||||
}
|
||||
}
|
||||
|
||||
function deleteUserByEmail(email) {
|
||||
const userIndex = users.findIndex((user) => user.email === email);
|
||||
|
||||
if (userIndex !== -1) {
|
||||
users.splice(userIndex, 1);
|
||||
console.log(`User with email ${email} has been deleted.`);
|
||||
} else {
|
||||
console.log('User with email not found.');
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// b. Create a function called signIn which allows user to sign in to the application
|
||||
|
||||
const signIn = function (email, password) {
|
||||
const foundUser = users.find((user) => user.email === email && user.password === password);
|
||||
|
||||
if (foundUser) {
|
||||
foundUser.isLoggedIn = true;
|
||||
console.log('You have logged in!');
|
||||
} else {
|
||||
console.log('Incorrect email or password.');
|
||||
}
|
||||
};
|
||||
|
||||
|
@ -0,0 +1,74 @@
|
||||
const 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'],
|
||||
},
|
||||
]
|
||||
|
||||
module.exports = {users, products}
|
Loading…
Reference in new issue