Skip to content

Commit 4a525cf

Browse files
Fiverr-Client:Manueltaveras cyclic-software#1.1
1 parent 2bf2793 commit 4a525cf

11 files changed

Lines changed: 149 additions & 49 deletions

File tree

controllers/attendance.js

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,10 @@ const markAttendance = async (req, res) => {
1111
employeeID: employeeID
1212
})
1313

14-
// if (employee) {
15-
// const attendance = new attendanceModel({ employeeID: employeeID })
16-
// attendance.save()
17-
// }
14+
if (employee) {
15+
const attendance = new attendanceModel({ employeeID: employee._id })
16+
await attendance.save()
17+
}
1818

1919
res.status(200).send(employee)
2020
} catch (error) {

controllers/employee.js

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
/* eslint-disable no-unused-vars */
22
/* eslint-disable no-undef */
3+
const attendanceModel = require('../model/attendance')
34
const employeeModel = require('../model/employee')
45

56
const saveEmployee = async (req, res) => {
@@ -28,7 +29,30 @@ const getEmployees = async (req, res) => {
2829
res.status(200).send(employees)
2930
}
3031

32+
const getPresentEmployees = async (req, res) => {
33+
const presentEmployees = await attendanceModel.find()
34+
.populate('employeeID')
35+
.exec()
36+
37+
res.status(200).send(presentEmployees)
38+
}
39+
40+
const updateEmployeeColumn = async (req, res) => {
41+
try {
42+
const { id, columnId } = req.body
43+
44+
await employeeModel.findByIdAndUpdate(id, { columnId: columnId })
45+
46+
res.status(200).send("Successfully updated the column")
47+
48+
} catch (error) {
49+
res.status(400).send(error)
50+
}
51+
}
52+
3153
module.exports = {
3254
saveEmployee,
33-
getEmployees
55+
getEmployees,
56+
getPresentEmployees,
57+
updateEmployeeColumn,
3458
}
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
asset-manifest.json,1704346213494,683dda928baf100aa526aa94b41ed91a9a2279c5cd5df10d1d72839fa68e9a11
2+
favicon.ico,1703916380428,27edce7be5922cf0bef7d4136f69b5bfbdd5bf8c13c7b026f71187d41a00aa7d
3+
index.html,1704346213494,0a7af72373355552aec7537a38ebca3941681255f6ab51200dddadaeb2245a62
4+
logo192.png,1703916385621,79e2b749561016bc8af300ea19f48347ceed3cb1a54f48ae456172eca45e08f0
5+
manifest.json,1703916384269,ee04fb47e525c67d8424ffe9b4d8a8a24e434504478afca4e0ca602146836d4c
6+
robots.txt,1703916387913,bfe106a3fb878dc83461c86818bf74fc1bdc7f28538ba613cd3e775516ce8b49
7+
logo512.png,1703916385770,212b102aa09e51b3b3e06647e81f7801a61333e171f6582e8124379aabccb41d
8+
static/css/main.df6fdbff.css,1704346213498,5cdf51ab3b1b6834629dd176b078b004cd07590b3e139d6f86bb8654bcfed145
9+
static/js/787.7f5a1603.chunk.js,1704346213498,d1c56c4ccee8cd01f41593669db64c2db2210dda0addaa9cce2349252ad51e57
10+
static/css/main.df6fdbff.css.map,1704346213498,49ab3be7a7d9886fcb4b4bfeb7d559b9d37c3d582347bf867f43081bd6bd0328
11+
static/js/main.3d825961.js.LICENSE.txt,1704346213498,1816694f55f8c926962178d808fa817fab63f3a889e740ddb54d628e529c6df5
12+
static/js/787.7f5a1603.chunk.js.map,1704346213498,a1da92fe96f176f27e3a7602c0c9ff985ae8b29b3405b8b7c6b66158ebda95b6
13+
static/js/main.3d825961.js,1704346213498,2a9497b1d92e8555988e3d772d333d07fb9f4248463f9edee8d2591a2cafce38
14+
static/js/main.3d825961.js.map,1704346213498,e2144b6645cee11c4399a0695b3be952bd2bbc69a2a2213247985e958ffe1d86

frontend/.firebaserc

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
{
2+
"projects": {
3+
"default": "manueltaveras-fiverr"
4+
}
5+
}

frontend/firebase.json

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
{
2+
"hosting": {
3+
"public": "build",
4+
"ignore": [
5+
"firebase.json",
6+
"**/.*",
7+
"**/node_modules/**"
8+
],
9+
"rewrites": [
10+
{
11+
"source": "**",
12+
"destination": "/index.html"
13+
}
14+
]
15+
}
16+
}

frontend/src/components/Supervisor.js

Lines changed: 41 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import React, { useMemo, useState } from 'react'
1+
import React, { useMemo, useState, useEffect } from 'react'
22
import {
33
DndContext,
44
DragEndEvent,
@@ -15,6 +15,7 @@ import { createPortal } from "react-dom";
1515
import Container from './Container';
1616
import PlusIcon from '../icons/PlusIcon';
1717
import TaskCard from './TaskCard';
18+
import axios from 'axios';
1819

1920
const defaultCols = [
2021
{
@@ -100,16 +101,35 @@ const defaultTasks = [
100101
},
101102
];
102103

103-
const Supervisor = ({ employeeDetails }) => {
104-
console.log(employeeDetails)
105-
const [columns, setColumns] = useState(defaultCols);
106-
const updatedTask = [
107-
...defaultTasks,
108-
...employeeDetails
109-
]
110-
console.log(updatedTask)
104+
const GetPresentEmployeesURL = 'http://localhost:8000/employee/getPresentEmployees'
105+
const UpdateEmployeeColumnURL = 'http://localhost:8000/employee/updateEmployeeColumn'
106+
107+
const Supervisor = () => {
108+
109+
const [employeeDetails, setEmployeeDetails] = useState([])
111110
const [tasks, setTasks] = useState(employeeDetails);
112111

112+
useEffect(() => {
113+
axios.get(GetPresentEmployeesURL)
114+
.then(response => {
115+
const data = response.data
116+
const empDetails = data.map((emp) => {
117+
const { employeeID } = emp
118+
return {
119+
...employeeID,
120+
// columnId: "justComeIn",
121+
id: employeeID._id,
122+
content: employeeID.skills,
123+
}
124+
})
125+
setTasks(empDetails)
126+
})
127+
.catch(e => console.log(e))
128+
}, [])
129+
130+
131+
const [columns, setColumns] = useState(defaultCols);
132+
113133
const [activeColumn, setActiveColumn] = useState(null);
114134

115135
const [activeTask, setActiveTask] = useState(null);
@@ -169,6 +189,7 @@ const Supervisor = ({ employeeDetails }) => {
169189
function onDragStart(event) {
170190
if (event.active.data.current?.type === "Column") {
171191
setActiveColumn(event.active.data.current.column);
192+
console.log(event.active.data.current.column)
172193
return;
173194
}
174195

@@ -240,7 +261,18 @@ const Supervisor = ({ employeeDetails }) => {
240261
if (isActiveATask && isOverAColumn) {
241262
setTasks((tasks) => {
242263
const activeIndex = tasks.findIndex((t) => t.id === activeId);
264+
console.log(tasks[activeIndex])
265+
const { _id } = tasks[activeIndex]
266+
267+
const data = {
268+
columnId: overId,
269+
id: _id
270+
}
243271

272+
axios.post(UpdateEmployeeColumnURL, data)
273+
.then((res) => console.log(res.data))
274+
.catch(e => console.log(e))
275+
244276
tasks[activeIndex].columnId = overId;
245277
console.log("DROPPING TASK OVER COLUMN", { activeIndex });
246278
return arrayMove(tasks, activeIndex, activeIndex);

frontend/src/components/TaskCard.jsx

Lines changed: 31 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import { CSS } from "@dnd-kit/utilities";
66
const TaskCard = ({ task, deleteTask, updateTask }) => {
77
console.log(task)
88
const [mouseIsOver, setMouseIsOver] = useState(false);
9-
const [editMode, setEditMode] = useState(true);
9+
// const [editMode, setEditMode] = useState(true);
1010
const {
1111
setNodeRef,
1212
attributes,
@@ -20,15 +20,15 @@ const TaskCard = ({ task, deleteTask, updateTask }) => {
2020
type: "Task",
2121
task,
2222
},
23-
disabled: editMode,
23+
// disabled: editMode,
2424
});
2525
const style = {
2626
transition,
2727
transform: CSS.Transform.toString(transform),
2828
};
2929

3030
const toggleEditMode = () => {
31-
setEditMode((prev) => !prev);
31+
// setEditMode((prev) => !prev);
3232
setMouseIsOver(false);
3333
};
3434

@@ -45,34 +45,34 @@ const TaskCard = ({ task, deleteTask, updateTask }) => {
4545
);
4646
}
4747

48-
if (editMode) {
49-
return (
50-
<div
51-
ref={setNodeRef}
52-
style={style}
53-
{...attributes}
54-
{...listeners}
55-
className="bg-mainBackgroundColor p-2.5 h-[100px] min-h-[100px] items-center flex text-left rounded-xl hover:ring-2 hover:ring-inset hover:ring-rose-500 cursor-grab relative"
56-
>
57-
<textarea
58-
className="
59-
h-[90%]
60-
w-full resize-none border-none rounded text-black bg-transparent text-white focus:outline-none
61-
"
62-
value={task.content}
63-
autoFocus
64-
placeholder="Task content here"
65-
onBlur={toggleEditMode}
66-
onKeyDown={(e) => {
67-
if (e.key === "Enter" && e.shiftKey) {
68-
toggleEditMode();
69-
}
70-
}}
71-
onChange={(e) => updateTask(task.id, e.target.value)}
72-
/>
73-
</div>
74-
);
75-
}
48+
// if (editMode) {
49+
// return (
50+
// <div
51+
// ref={setNodeRef}
52+
// style={style}
53+
// {...attributes}
54+
// {...listeners}
55+
// className="bg-mainBackgroundColor p-2.5 h-[100px] min-h-[100px] items-center flex text-left rounded-xl hover:ring-2 hover:ring-inset hover:ring-rose-500 cursor-grab relative"
56+
// >
57+
// <textarea
58+
// className="
59+
// h-[90%]
60+
// w-full resize-none border-none rounded text-black bg-transparent text-white focus:outline-none
61+
// "
62+
// value={task.content}
63+
// autoFocus
64+
// placeholder="Task content here"
65+
// onBlur={toggleEditMode}
66+
// onKeyDown={(e) => {
67+
// if (e.key === "Enter" && e.shiftKey) {
68+
// toggleEditMode();
69+
// }
70+
// }}
71+
// onChange={(e) => updateTask(task.id, e.target.value)}
72+
// />
73+
// </div>
74+
// );
75+
// }
7676

7777
return (
7878
<div

model/attendance.js

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,9 @@ const { Schema, model } = require('mongoose')
44

55
const attendanceSchema = new Schema({
66
employeeID: {
7-
type: String,
8-
required: true
7+
type: Schema.Types.ObjectId,
8+
ref: "employee",
9+
// required: true,
910
}
1011
}, { timestamps: true })
1112

model/employee.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,11 @@ const employeeSchema = new Schema({
5252
isHere: {
5353
type: String,
5454
required: true,
55+
},
56+
columnId: {
57+
type: String,
58+
required: true,
59+
default: 'justComeIn'
5560
}
5661
})
5762

package.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,8 @@
44
"description": "Cyclic.sh micro api starter",
55
"main": "index.js",
66
"scripts": {
7-
"test": "echo \"Error: no test specified\" && exit 1"
7+
"test": "echo \"Error: no test specified\" && exit 1",
8+
"dev": "nodemon index.js"
89
},
910
"author": "",
1011
"license": "ISC",

0 commit comments

Comments
 (0)