Skip to content

Commit

Permalink
implemented route for filtering user activity
Browse files Browse the repository at this point in the history
  • Loading branch information
iamug committed Jun 4, 2021
1 parent d497842 commit f6adadd
Show file tree
Hide file tree
Showing 5 changed files with 47 additions and 14 deletions.
25 changes: 22 additions & 3 deletions App/Http/Controller/UserActivityController.ts
Original file line number Diff line number Diff line change
Expand Up @@ -26,13 +26,32 @@ class UserActivityController {
};

/**
* Show the form for creating a new resource.
* Filter user activiites by startdate and enddate
*
* @return Response
*/
create = async (req: Request, res: Response, next: NextFunction) => {
filterActivities = async (
req: Request,
res: Response,
next: NextFunction
) => {
try {
//
let validate = await req.validate(req.body, {
startDate: "required|date",
endDate: "date",
});
if (!validate["success"]) return HttpResponse.BAD_REQUEST(res, validate);
return await this.ActivityService.filterUserActivites(
req.user["_id"],
validate["data"]["startDate"],
validate["data"]["endDate"] || new Date()
)
.then((result) => {
return HttpResponse.OK(res, result);
})
.catch((err) => {
return HttpResponse.EXPECTATION_FAILED(res, err);
});
} catch (error) {
return next(error);
}
Expand Down
1 change: 1 addition & 0 deletions App/Service/Activities/IActivityService.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
interface IActivityService {
getUserActivities(id: string): Promise<object>;
filterUserActivites(id: string, start: Date, end: Date): Promise<object>;
}

export default IActivityService;
32 changes: 22 additions & 10 deletions App/Service/Activities/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,25 +3,37 @@ import ClockOutRepository from "App/Repository/ClockOutRepository";
import IActivityService from "./IActivityService";

class ActivityService implements IActivityService {
async filterUserActivites(
id: string,
start: Date,
end: Date
): Promise<object> {
const startDate = new Date(new Date(start).setHours(0, 0, 0, 0));
const endDate = new Date(new Date(end).setHours(23, 59, 59, 0));
const query = { user: id, createdAt: { $gte: startDate, $lt: endDate } };
return await new Promise(async (resolve, reject) => {
try {
let clockIn = await new ClockInRepository().getAllWhere(query);
let clockOut = await new ClockOutRepository().getAllWhere(query);
resolve({
status: true,
data: [...Object.values(clockIn), ...Object.values(clockOut)],
});
} catch (error) {
reject({ status: false, data: error });
}
});
}
async getUserActivities(id: string): Promise<object> {
return await new Promise(async (resolve, reject) => {
try {
let clockIn = await new ClockInRepository().findBy("user", id);
let clockOut = await new ClockOutRepository().findBy("user", id);
// let datab = [...Object.values(clockIn), ...Object.values(clockOut)];
// console.log("data");
// let result = datab.reduce(function (r, a) {
// r[new Date(a.createdAt).toDateString()] =
// r[new Date(a.createdAt).toDateString()] || [];
// r[new Date(a.createdAt).toDateString()].push(a);
// return r;
// }, Object.create(null));
// console.log(result);
resolve({
status: true,
data: [...Object.values(clockIn), ...Object.values(clockOut)],
});
resolve({ status: false, data: "User does not exist" });
// resolve({ status: false, data: "User does not exist" });
} catch (error) {
reject({ status: false, data: error });
}
Expand Down
2 changes: 1 addition & 1 deletion App/Service/ClockOut/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ class ClockOutService implements IClockOutService {
): Promise<string> => {
return await new Promise(async (resolve, reject) => {
try {
let emailCheck = await this.userService.getUserByEmail(email);
let emailCheck = await this.userService.getUserNameByEmail(email);
if (!emailCheck["status"]) return reject("User not found");
let id = emailCheck["data"]["id"];
let name = emailCheck["data"]["fullname"];
Expand Down
1 change: 1 addition & 0 deletions Routes/Activity/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ import { Request, Response, NextFunction } from "Elucidate/HttpContext";

Route.group("/activities", () => {
Route.get("/", "UserActivityController@getAll", ["auth"]);
Route.post("/filter", "UserActivityController@filterActivities", ["auth"]);
});

//--------------------------------------------------------------------------
Expand Down

0 comments on commit f6adadd

Please sign in to comment.