Implement endpoint return content from about us to client.

This commit is contained in:
Djonathan 2022-06-24 15:28:05 -03:00
parent b5297229b6
commit fe5de7c4bb
12 changed files with 216 additions and 10 deletions

View File

@ -0,0 +1,55 @@
<?php
declare(strict_types=1);
namespace App\Http\Controllers;
use App\Http\Requests\StoreAboutUsRequest;
use App\Http\Resources\AboutUsResource;
use App\Models\AboutUs;
use App\Repositories\AboutUs\AboutUsContractInterface;
use App\Traits\ApiResponse;
use Illuminate\Http\Response;
class AboutUsController extends Controller
{
use ApiResponse;
public function __construct(
protected AboutUsContractInterface $aboutUsContract
){}
public function index()
{
try {
$response = $this->aboutUsContract->all();
return (new AboutUsResource($response))
->response()
->setStatusCode(Response::HTTP_OK);
} catch (\Exception $ex) {
return $this->errorResponse(false, $ex->getMessage(), Response::HTTP_INTERNAL_SERVER_ERROR);
}
}
public function store(StoreAboutUsRequest $aboutUsRequest)
{
try {
$about = $this->aboutUsContract->max('id');
if ($about !== null)
{
$response = $this->aboutUsContract->update($aboutUsRequest->validated(), $about);
} else {
$response = $this->aboutUsContract->create($aboutUsRequest->validated());
}
return (new AboutUsResource($response))
->response()
->setStatusCode(Response::HTTP_ACCEPTED);
} catch (\Exception $ex) {
return $this->errorResponse(false, $ex->getMessage(), Response::HTTP_INTERNAL_SERVER_ERROR);
}
}
}

View File

@ -19,9 +19,16 @@ class TelemetryController extends Controller
protected Med5minContractInterface $med5minContract
){}
public function index()
public function index(Request $request)
{
//
try {
$response = $this->med5minContract->search($request->all());
return (new TelemetryResource($response))
->response()
->setStatusCode(Response::HTTP_OK);
} catch (\Exception $ex) {
return $this->errorResponse(false, $ex->getMessage(), Response::HTTP_INTERNAL_SERVER_ERROR);
}
}
public function powerFactor(Request $request)

View File

@ -0,0 +1,30 @@
<?php
namespace App\Http\Requests;
use Illuminate\Foundation\Http\FormRequest;
class StoreAboutUsRequest extends FormRequest
{
/**
* Determine if the user is authorized to make this request.
*
* @return bool
*/
public function authorize()
{
return true;
}
/**
* Get the validation rules that apply to the request.
*
* @return array<string, mixed>
*/
public function rules()
{
return [
'about' => 'required|string',
];
}
}

View File

@ -0,0 +1,19 @@
<?php
namespace App\Http\Resources;
use Illuminate\Http\Resources\Json\JsonResource;
class AboutUsResource extends JsonResource
{
/**
* Transform the resource into an array.
*
* @param \Illuminate\Http\Request $request
* @return array|\Illuminate\Contracts\Support\Arrayable|\JsonSerializable
*/
public function toArray($request)
{
return parent::toArray($request);
}
}

37
app/Models/AboutUs.php Normal file
View File

@ -0,0 +1,37 @@
<?php
namespace App\Models;
use DateTimeInterface;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;
use OwenIt\Auditing\Auditable;
use OwenIt\Auditing\Contracts\Auditable as Auditing;
class AboutUs extends Model implements Auditing
{
use HasFactory, SoftDeletes, Auditable;
protected $table = "about_us";
protected $guarded = ['id'];
protected $fillable = [
'about',
'created_at',
'updated_at',
'deleted_at',
];
protected $hidden = [
'updated_at',
'deleted_at',
];
protected function serializeDate(DateTimeInterface $date): string
{
return $date->format('d/m/Y H:i:s');
}
}

View File

@ -6,10 +6,12 @@ use DateTimeInterface;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;
use OwenIt\Auditing\Auditable;
use OwenIt\Auditing\Contracts\Auditable as Auditing;
class InfoSectorial extends Model
class InfoSectorial extends Model implements Auditing
{
use HasFactory, SoftDeletes;
use HasFactory, SoftDeletes, Auditable;
protected $table = "info_sectorial";

View File

@ -8,10 +8,11 @@ use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsToMany;
use Illuminate\Database\Eloquent\SoftDeletes;
use OwenIt\Auditing\Auditable;
use OwenIt\Auditing\Contracts\Auditable as Auditing;
class Notifications extends Model
class Notifications extends Model implements Auditing
{
use HasFactory, SoftDeletes;
use HasFactory, SoftDeletes, Auditable;
protected $table = 'notificacoes';

View File

@ -2,6 +2,8 @@
namespace App\Providers;
use App\Repositories\AboutUs\AboutUsContractInterface;
use App\Repositories\AboutUs\AboutUsRepository;
use App\Repositories\DadosCadastrais\DadosCadastraisContractInterface;
use App\Repositories\DadosCadastrais\DadosCadastraisRepository;
use App\Repositories\DadosTe\DadosTeContractInterface;
@ -61,6 +63,10 @@ class AppServiceProvider extends ServiceProvider
Med5minContractInterface::class,
Med5minRepository::class
);
$this->app->bind(
AboutUsContractInterface::class,
AboutUsRepository::class
);
}
/**

View File

@ -0,0 +1,10 @@
<?php
namespace App\Repositories\AboutUs;
use App\Repositories\ContractInterface;
interface AboutUsContractInterface extends ContractInterface
{
}

View File

@ -0,0 +1,17 @@
<?php
declare(strict_types=1);
namespace App\Repositories\AboutUs;
use App\Models\AboutUs;
use App\Repositories\AbstractRepository;
class AboutUsRepository extends AbstractRepository implements AboutUsContractInterface
{
public function __construct(AboutUs $aboutUs)
{
parent::__construct($aboutUs);
}
}

View File

@ -0,0 +1,22 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration {
public function up()
{
Schema::create('about_us', function (Blueprint $table) {
$table->id();
$table->text('about');
$table->timestamps();
$table->softDeletes();
});
}
public function down()
{
Schema::dropIfExists('about_us');
}
};

View File

@ -44,6 +44,8 @@ Route::middleware(['auth:sanctum', 'ability:Admin'])->group(function () {
Route::post('updateFile', [\App\Http\Controllers\InfoSectorialController::class, 'updateFile']);
Route::post('aboutUs', [\App\Http\Controllers\AboutUsController::class, 'store']);
});
Route::middleware(['auth:sanctum', 'ability:Client'])->group(function () {
@ -58,13 +60,9 @@ Route::middleware(['auth:sanctum', 'ability:Client'])->group(function () {
Route::post('economy/estimates', [\App\Http\Controllers\EconomyController::class, 'captiveMonthlyEconomy']);
Route::post('economy/MWh', [\App\Http\Controllers\EconomyController::class, 'costMWhEconomy']);
// Route::post('telemetry', [\App\Http\Controllers\TelemetryController::class, 'index']);
Route::post('telemetry/powerFactor', [\App\Http\Controllers\TelemetryController::class, 'powerFactor']);
Route::post('telemetry/demand', [\App\Http\Controllers\TelemetryController::class, 'demand']);
Route::post('telemetry/discretization', [\App\Http\Controllers\TelemetryController::class, 'discretization']);
// Route::post('telemetry/grossMonthly', [\App\Http\Controllers\TelemetryController::class, 'grossMonthlyEconomy']);
// Route::post('telemetry/estimates', [\App\Http\Controllers\TelemetryController::class, 'captiveMonthlyEconomy']);
// Route::post('telemetry/MWh', [\App\Http\Controllers\TelemetryController::class, 'costMWhEconomy']);
Route::post('operation/summary', [\App\Http\Controllers\OperationSummaryController::class, 'operationSummary']);
Route::post('operation', [\App\Http\Controllers\OperationSummaryController::class, 'index']);
@ -72,6 +70,8 @@ Route::middleware(['auth:sanctum', 'ability:Client'])->group(function () {
Route::get('download', [\App\Http\Controllers\InfoSectorialController::class, 'download']);
Route::post('notify', [\App\Http\Controllers\NotificationController::class, 'notify']);
Route::get('aboutUs', [\App\Http\Controllers\AboutUsController::class, 'index']);
});