Browse Source

Sort clients by activities

master
Garrit Franke 3 years ago
parent
commit
b485133498
  1. 1
      client/views/clients/Detail.jsx
  2. 32
      server/model/Client.js
  3. 5
      server/package-lock.json
  4. 1
      server/package.json
  5. 17
      server/routes/clients.js

1
client/views/clients/Detail.jsx

@ -3,7 +3,6 @@ import Layout from "../layouts/Main";
import moment from "moment";
export default function Detail({ client, user }) {
console.table(client);
const timelineComponent = client.events
.reverse()
.slice(0, 2)

32
server/model/Client.js

@ -1,4 +1,5 @@
const mongoose = require("mongoose");
const { timeStamp } = require("console");
const event = new mongoose.Schema(
{
@ -12,21 +13,24 @@ const event = new mongoose.Schema(
{ timestamps: true }
);
const schema = new mongoose.Schema({
name: { type: String, required: true },
email: { type: String },
events: {
type: [event],
default: [],
},
address: { type: String },
telephone: { type: String },
created_by: {
type: mongoose.Schema.Types.ObjectId,
required: true,
ref: "User",
const schema = new mongoose.Schema(
{
name: { type: String, required: true },
email: { type: String },
events: {
type: [event],
default: [],
},
address: { type: String },
telephone: { type: String },
created_by: {
type: mongoose.Schema.Types.ObjectId,
required: true,
ref: "User",
},
},
});
{ timestamps: true }
);
const Client = mongoose.model("Client", schema);

5
server/package-lock.json generated

@ -1006,6 +1006,11 @@
"integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==",
"dev": true
},
"moment": {
"version": "2.29.1",
"resolved": "https://registry.npmjs.org/moment/-/moment-2.29.1.tgz",
"integrity": "sha512-kHmoybcPV8Sqy59DwNDY3Jefr64lK/by/da0ViFcuA4DH0vQg5Q6Ze5VimxkfQNSC+Mls/Kx53s7TjP1RhFEDQ=="
},
"mongodb": {
"version": "3.6.2",
"resolved": "https://registry.npmjs.org/mongodb/-/mongodb-3.6.2.tgz",

1
server/package.json

@ -14,6 +14,7 @@
"express": "^4.17.1",
"express-form-data": "^2.0.14",
"jsonwebtoken": "^8.5.1",
"moment": "^2.29.1",
"mongoose": "^5.10.7"
},
"devDependencies": {

17
server/routes/clients.js

@ -1,5 +1,6 @@
const router = require("express").Router();
const mongoose = require("mongoose");
const moment = require("moment");
const Client = require("../model/Client");
const User = require("../model/User");
@ -7,13 +8,15 @@ const User = require("../model/User");
router.get("/", async (req, res) => {
const client = await Client.find({ created_by: req.userId }).map(
(clients) => {
return clients.map((client) => {
const status = client.events.filter(
(event) => event.eventType == "status_changed"
)[0];
if (status) return { ...client.toJSON(), status: status.value };
else return { ...client.toJSON(), status: "" };
});
return clients
.map((client) => {
const status = client.events.filter(
(event) => event.eventType == "status_changed"
)[0];
if (status) return { ...client.toJSON(), status: status.value };
else return { ...client.toJSON(), status: "" };
})
.sort((a, b) => moment(b.updatedAt).subtract(a.updatedAt));
}
);
res.json(client);

Loading…
Cancel
Save