Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .env.example
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ LOG_LEVEL=debug
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=laravel
DB_DATABASE=projecttest
DB_USERNAME=root
DB_PASSWORD=

Expand Down
7 changes: 7 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,5 +18,12 @@ php artisan key:generate
# Iniciar servicio
php artisan serve

# Exportar Base de Datos por Laravel Migrations
php artisan migrate

### Alternativa usar SQL para importar Base de datos en MySQL
db.sql

# Lanzar proyecto
Verificar proyecto en:
http://localhost:8000
159 changes: 159 additions & 0 deletions app/Http/Controllers/AssigmentController.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,159 @@
<?php

namespace App\Http\Controllers;

use App\Models\Assigment;
use App\Models\Project;
use App\Models\Worker;

use Illuminate\Http\Request;

class AssigmentController extends Controller
{
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index()
{
//get asigments
$assigments = Assigment::with(['worker', 'project'])->get();

//return view
return view('assigment.index')->with('assigments', $assigments);
}

/**
* Show the form for creating a new resource.
*
* @return \Illuminate\Http\Response
*/
public function create()
{
//get projects and workers actives fron DB
$projects = Project::where('active', '=', 1)->get();
$workers = Worker::where('active', '=', 1)->get();

//return view
return view('assigment.create')->with('projects', $projects)->with('workers', $workers);
}

/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function store(Request $request)
{
//set model instance to save in DB
$assigment = new Assigment();
$assigment->worker_id = $request->get('worker_id');
$assigment->project_id = $request->get('project_id');
$assigment->assigment_date = $request->get('assigment_date');
$assigment->amount = $request->get('amount');

//verifiy if exist assigment
$exist = Assigment::where('worker_id', $assigment->worker_id)
->where('project_id', $assigment->project_id)->first();
if ($exist != null)
{
//redirect with error
return redirect()->back()->withInput()
->withErrors(['La asignación de proyecto y cooperante ya existe']);
}

//save in DB
$assigment->save();

//redirect to index
return redirect('/assigments');
}

/**
* Display the specified resource.
*
* @param \App\Models\Assigment $assigment
* @return \Illuminate\Http\Response
*/
public function show(Assigment $assigment)
{
//
}

/**
* Show the form for editing the specified resource.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function edit($id)
{
//get assigment by id
$assigment = Assigment::findOrFail($id);

//get projects and workers actives fron DB
$projects = Project::where('active', '=', 1)->get();
$workers = Worker::where('active', '=', 1)->get();

//return view
return view('assigment.edit')->with('assigment', $assigment)
->with('projects', $projects)
->with('workers', $workers);
}

/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param int $id
* @return \Illuminate\Http\Response
*/
public function update(Request $request, $id)
{
//get assigment by id
$assigment = Assigment::findOrFail($id);

//set model instance to save in DB
$assigment->worker_id = $request->get('worker_id');
$assigment->project_id = $request->get('project_id');
$assigment->assigment_date = $request->get('assigment_date');
$assigment->amount = $request->get('amount');

//verifiy if exist assigment
$exist = Assigment::where('worker_id', $assigment->worker_id)
->where('project_id', $assigment->project_id)
->where('id', '<>', $id)->first();
if ($exist != null)
{
//redirect with error
return redirect()->back()->withInput()
->withErrors(['La asignación de proyecto y cooperante ya existe']);
}

//save in DB
$assigment->save();

//redirect to index
return redirect('/assigments');
}

/**
* Remove the specified resource from storage.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function destroy($id)
{
//get assigment by id
$assigment = Assigment::findOrFail($id);

//delete assigment
$assigment->delete();

//redirect to index
return redirect('/assigments');
}
}
143 changes: 143 additions & 0 deletions app/Http/Controllers/ProjectController.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,143 @@
<?php

namespace App\Http\Controllers;

use App\Models\Project;
use Illuminate\Http\Request;

class ProjectController extends Controller
{
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index()
{
//get projects
$projects = Project::all();

//return view
return view('project.index')->with('projects', $projects);
}

/**
* Show the form for creating a new resource.
*
* @return \Illuminate\Http\Response
*/
public function create()
{
//return view
return view('project.create');
}

/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function store(Request $request)
{
//Set model instance to save in DB
$project = new Project();
$project->name = $request->get('name');
$project->description = $request->get('description');
$project->start_date = $request->get('start_date');
$project->end_date = $request->get('end_date');
$project->active = $request->get('active') ?? 0;

//validate dates
if ($project->start_date > $project->end_date)
{
//redirect with error
return redirect()->back()->withInput()
->withErrors(['La fecha de inicio no puede ser mayor a la final']);
}

//Save in DB
$project->save();

//redirect to index
return redirect('/projects');
}

/**
* Display the specified resource.
*
* @param \App\Models\Project $project
* @return \Illuminate\Http\Response
*/
public function show(Project $project)
{
//
}

/**
* Show the form for editing the specified resource.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function edit($id)
{
//get project by id
$project = Project::findOrFail($id);

//return view
return view('project.edit')->with('project', $project);
}

/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param int $id
* @return \Illuminate\Http\Response
*/
public function update(Request $request, $id)
{
//get project by id
$project = Project::findOrFail($id);

//set model to save in DB
$project->name = $request->get('name');
$project->description = $request->get('description');
$project->start_date = $request->get('start_date');
$project->end_date = $request->get('end_date');
$project->active = $request->get('active') ?? 0;

//validate dates
if ($project->start_date > $project->end_date)
{
//redirect with error
return redirect()->back()->withInput()
->withErrors(['La fecha de inicio no puede ser mayor a la final']);
}

//save in DB
$project->save();

//redirect to index
return redirect('/projects');
}

/**
* Remove the specified resource from storage.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function destroy($id)
{
//get project by id
$project = Project::findOrFail($id);

//delete project
$project->delete();

//redirect to index
return redirect('/projects');
}
}
34 changes: 34 additions & 0 deletions app/Http/Controllers/ReportController.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
<?php

namespace App\Http\Controllers;

use App\Models\Assigment;
use App\Models\Project;
use App\Models\Worker;

use Illuminate\Http\Request;

class ReportController extends Controller
{
//

public function index()
{
//find all active workers
$workers = Worker::where('active', '=', 1)->get();

//return view
return view('report.index')->with('workers', $workers);
}


public function show($id)
{
//find all assigments by worker
$assigments = Assigment::where('worker_id', '=', $id)
->with('project')->get();

//return view
return view('report.report')->with('assigments', $assigments);
}
}
Loading