Skip to content

Commit

Permalink
Revert "Refactoring of taskController"
Browse files Browse the repository at this point in the history
  • Loading branch information
kayleb01 authored Oct 31, 2021
1 parent 671cc16 commit f221c32
Show file tree
Hide file tree
Showing 9 changed files with 178 additions and 369 deletions.
16 changes: 9 additions & 7 deletions app/Helpers/Collaborator.php
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,18 @@
namespace App\Helpers;

use App\Mail\TaskAddedMail;
use Illuminate\Support\Facades\Log;
use App\Repositories\TodoRepository;
use App\Services\UserService;
use Illuminate\Support\Facades\Http;
use Illuminate\Support\Facades\Log;
use Illuminate\Support\Facades\Mail;

class Collaborator extends TodoRepository
class Collaborator
{
protected $userService;
public function __construct(UserService $userService)
{
$this->userService = $userService;
}

public static function isAdmin(array $todo, $userId): bool
{
Expand Down Expand Up @@ -66,7 +71,7 @@ public function sendMails(array $user_ids, $subject, $message)
for ($i = 0; $i < count($user_ids); $i++) {
# code...
$data['user_id'] = $user_ids[$i];
$user = $this->findUser($data, $bearerToken);
$user = $this->userService->findUser($data, $bearerToken);
// Log::info($user['email'])
$this->sendMail($user, $subject, $message);
}
Expand Down Expand Up @@ -97,7 +102,4 @@ public static function sortAdminFirst(array $collaborators): array

return $adminFirstList;
}
public function findUser($data, $bearerToken){
return $this->httpRepository->findUser($data,$bearerToken);
}
}
32 changes: 7 additions & 25 deletions app/Http/Controllers/ArchiveController.php
Original file line number Diff line number Diff line change
Expand Up @@ -9,10 +9,6 @@
class ArchiveController extends Controller
{
protected $todoService;
/**
* Constructor that resolves todo service
* @param $todoService
*/

public function __construct(TodoService $todoService)
{
Expand All @@ -33,22 +29,15 @@ public function archiveTodo(Request $request, $todoId)
if (isset($todo['status'])) {
$todo['archived_at'] = now();
}

$updatedTodo = array_merge($todo, ['archived_at' => now()]);
$result = $this->todoService->update($updatedTodo, $todoId);

if (isset($result['modified_documents']) && $result['modified_documents'] > 0) {
// Publish To Centrifugo Here
$this->todoService->publishToRoomChannel($todo['channel'], $todo, "todo", "archive");

return response()->json(
["status" => "success", "type" => "Todo", "data" => array_merge(
[
'_id' => $todoId],
$updatedTodo
)
],
200
);
return response()->json(["status" => "success", "type" => "Todo", "data" => array_merge(['_id' => $todoId], $updatedTodo)], 200);
}

return response()->json(['status' => "error", 'message' => $result], 500);
Expand All @@ -64,25 +53,16 @@ public function unArchiveTodo(Request $request, $todoId)
return response()->json($todo, 404);
}

$results = array_search($todo['archived_at'], $todo, true);
if ($results !== false) {
$results=array_search($todo['archived_at'],$todo,true);
if($results !== false) {
$todo['archived_at'] = null;
}

$updatedTodo = array_merge($todo, ['archived_at' => null]);
$result = $this->todoService->update($updatedTodo, $todoId);
if (isset($result['modified_documents']) && $result['modified_documents'] > 0) {
// Publish To Centrifugo Here
return response()->json(
["status" => "success", "type" => "Todo", "data" => array_merge(
[
'_id' => $todoId
],
$updatedTodo
)
],
200
);
return response()->json(["status" => "success", "type" => "Todo", "data" => array_merge(['_id' => $todoId], $updatedTodo)], 200);
}
return response()->json(['status' => "error", 'message' => $result], 500);
}
Expand All @@ -91,6 +71,8 @@ public function fetchArchived(Request $request)
{
// This function should normally be user centric
// but for the ime being, leave for now
Sort::sortAsc($request);

$all = $this->todoService->all();
$archived = [];
if (isset($all['status']) && $all['status'] == 404) {
Expand Down
12 changes: 4 additions & 8 deletions app/Http/Controllers/SideBar/TodoController.php
Original file line number Diff line number Diff line change
Expand Up @@ -15,10 +15,9 @@ class TodoController extends Controller
{
use HTTPRepoResponseHandler;

protected $todoRepository;
protected $roomRepository;
protected $todoRepository, $roomRepository;

public function __construct(TodoRepository $todoRepository, RoomRepository $roomRepository)
function __construct(TodoRepository $todoRepository, RoomRepository $roomRepository)
{
$this->todoRepository = $todoRepository;
$this->roomRepository = $roomRepository;
Expand All @@ -33,10 +32,7 @@ public function index(Request $request)
];

// return response
return response()->json(
['message' => "success", "data" => $this->respondWithData($this->todoRepository->findWhere($todo_attr))],
200
);
return response()->json(['message' => "success", "data" => $this->respondWithData($this->todoRepository->findWhere($todo_attr))], 200);
}

public function store(Request $request)
Expand All @@ -56,7 +52,7 @@ public function store(Request $request)
$result = $this->todoRepository->create($todo_attr);

// check response
if ($result['status'] == 200 && isset($result["data"])){
if($result['status'] == 200 && isset($result["data"])){

// create room attr
$room_attr = [
Expand Down
174 changes: 146 additions & 28 deletions app/Http/Controllers/TaskController.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,15 +2,19 @@

namespace App\Http\Controllers;

use Carbon\Carbon;
use App\Helpers\Sort;
use Ramsey\Uuid\Uuid;
use Illuminate\Support\Str;
use Illuminate\Http\Request;
use App\Helpers\Collaborator;
use App\Services\TaskService;
use App\Services\TodoService;
use App\Services\UserService;
use App\Http\Requests\TaskRequest;
use App\Http\Resources\TodoResource;
use App\Http\Requests\AddTaskRequest;
use App\Http\Requests\TaskCategoryRequest;
use App\Http\Requests\MarkTaskRequest;
use Illuminate\Support\Facades\Validator;
use App\Http\Resources\TodoResourceCollection;

Expand All @@ -33,31 +37,32 @@ public function __construct(TaskService $taskService, TodoService $todoService,

/**
* Show the search results.
* @param Request $request
* @return mixed
*
* @return mixed
*/

public function index(Request $request)
{
return response()->json(new TodoResourceCollection($this->taskService->all()), 200);
$task = $this->taskService->all();

if (isset($task['status']) && $task['status'] == '404') {
return response()->json(['message' => 'Tasks not found'], 404);
}
return response()->json(new TodoResourceCollection($task), 200);
}
/**
* @return mixed
* This method orders the tasks in order of newly created
*/

public function getLatestTask()
{
return response()->json($this->taskService->getLatestTask());
}

/**
* @param string
* @return mixed
* returns a task by the TodoID
*/
public function show($id)
{
return response()->json($this->taskService->findBy('_id', $id), 200);
$tasks = $this->taskService->findBy('_id', $id);
if (empty($tasks)) {
return response()->json(['message' => 'Todo not found'], 404);
}
return response()->json($tasks, 200);
}

public function updateTaskDate(Request $request, $id)
Expand All @@ -67,19 +72,46 @@ public function updateTaskDate(Request $request, $id)

public function toggleArchiveStatus($id)
{
return $this->taskService->toggleStatus($id);
$task = $this->taskService->find($id); // Get the Task

$archived = array_key_exists('archived_at', $task) && $task['archived_at'] ? '' : Carbon::now(); // Set new date if it is null or empty, else set back to empty

// prepare the payload
$data = array();
$data['archived_at'] = $archived;

//response from zccore
return response()->json($this->taskService->update($data, $id));
}

public function getTasksByCategory(TaskCategoryRequest $request)
{

return response()->json(
[
'message' => 'Request success',
'data' => $this->taskService->taskCategory($request)
],
200
);

public function getTasksByCategory(Request $request)
{
// Validation of input
$validator = Validator::make($request->all(), [
'category_id' => 'required|integer'
]);
if ($validator->fails()) {
return response()->json([
'Error' => 'Request failed',
'message' => $validator->errors()
], 400);
}
// Search for the category
$allTasks = $this->taskService->all();
Sort::sortAll($request);

$newArr = [];
foreach ($allTasks as $value) {
if (isset($value['category_id']) && $value['category_id'] == $request->category_id) {
array_push($newArr, $value);
}
}
return response()->json([
'message' => 'Request success',
'data' => $newArr
], 200);
}


Expand All @@ -96,22 +128,108 @@ public function editTask(Request $request, $id)
public function taskcollection(Request $request)
{

return response()->json($this->taskService->taskCollection($request));
$allTasks = $this->taskService->all();
Sort::sortAll($request);

$sort = $request->order;
if ($sort){
$allTasks = collect($allTasks->sortBy('created_at'))->toArray;
}

$time = time();
$arr = array();
foreach ($allTasks as $value) {
if (array_key_exists('end_date', [$value])) {
$end_date = $value['end_date'];
$convert_date = strtotime($end_date);
if ($convert_date >= $time) {

$arr = $value;
}
}
}
return response()->json($arr);
}

public function sort(Request $request)
{
return response()->json($this->taskService->sort($request));
$parameter = $request->sort;
$tasks = $this->taskService->all();
$collectionTasks = collect($tasks)->sortBy($parameter);
return $collectionTasks;
}


public function addTask(AddTaskRequest $request, $todoId)
{
return response()->json(["status" => "success", "type" => "Todo", "data" => $this->taskService->add($request, $todoId)], 200);
$todo = $this->todoService->find($todoId);

if (isset($todo['status']) && $todo['status'] == 404) {
return response()->json($todo, 404);
}


$newTasks = [
"task_id" => Str::uuid(), "title" => $request->title,
"recurring" => $request->recurring, "status" => 0
];

array_push($todo['tasks'], $newTasks);
unset($todo['_id']);

$result = $this->todoService->update($todo, $todoId);

if (isset($result['modified_documents']) && $result['modified_documents'] > 0) {

// Publish To Centrifugo
$todoWithId = array_merge(['_id' => $todoId], $todo);
$this->todoService->publishToRoomChannel($todo['channel'], $todoWithId, "Task", "create");
// Send Mail
$user_ids = $this->collaboratorInstance->listAllUsersInTodo($todo);
$this->collaboratorInstance->sendMails($user_ids, 'Task Added', 'A task with the title'.$request->title.'has been added to the todo');

return response()->json(["status" => "success", "type" => "Todo", "data" => $todoWithId], 200);
}

return response()->json(['status' => "error", 'message' => $result], 500);
}

public function markTask(Request $request, $todoId)
{
return response()->json(["status" => "success", "data" => $this->taskService->MarkTask($request, $todoId)], 200);
$adminExist = false;
// inialize value for task
$todo = $this->todoService->findBy('_id', $todoId);
if (isset($todo['status']) && $todo['status'] == 404) {
return response()->json($todo, 404);
}
if ($todo['user_id'] != $request->user_id) {
foreach ($todo['collaborators'] as $key => $value) {
if ($value['user_id'] == $request->user_id && $value['admin_status'] == 1) {
$adminExist = true;
}
}
} else {
$adminExist = true;
}
for ($i = 0; $i < count($todo['tasks']); $i++) {
if ($todo['tasks'][$i]['task_id'] == $request->task_id) {
$todo['tasks'][$i]['status'] = $request->status;
}
}

unset($todo['_id']);

$result = $this->todoService->update($todo, $todoId);
if (isset($result['modified_documents']) && $result['modified_documents'] > 0) {
$todoWithId = array_merge(['_id' => $todoId], $todo);
$this->todoService->publishToRoomChannel($todo['channel'], $todoWithId, 'todo', 'update');

// Send Mail
$user_ids = $this->collaboratorInstance->listAllUsersInTodo($todo);
$this->collaboratorInstance->sendMails($user_ids, 'Task Added', 'A task with the title' . $request->title . 'has been marked in the todo');
return response()->json(["status" => "success", "data" => $todoWithId], 200);
} else {
return response()->json(["status" => "error", "data" => $result], 500);
}
}
}
1 change: 0 additions & 1 deletion app/Http/Controllers/TodoController.php
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,6 @@
use App\Helpers\Sort;
use App\Providers\SidebarEvent;


class TodoController extends Controller
{

Expand Down
Loading

0 comments on commit f221c32

Please sign in to comment.