Merge remote-tracking branch 'origin/master'

# Conflicts:
#	app/Http/Controllers/Companies/CompanyController.php
#	routes/api.php
This commit is contained in:
Omair Saleh
2019-05-27 09:49:01 +08:00
56 changed files with 1033 additions and 497 deletions
@@ -1,23 +0,0 @@
<?php
namespace App\Classes\ControllersLogic\Companies\AddressBook;
use App\Models\Company;
use App\Http\Resources\AddressBook as AddressBookResource;
class DefaultAddress
{
public function execute( string $companyId, string $id) {
Company::findOrfail($companyId)->addressBook()->update(['default' => 0]);
$address = Company::findOrfail($companyId)->addressBook()->findOrFail($id);
$address->default = 1;
if($address->save()){
return new AddressBookResource($address);
}
}
}
@@ -1,24 +0,0 @@
<?php
namespace App\Classes\ControllersLogic\Companies\AddressBook;
use App\Models\Company;
use App\Http\Resources\AddressBook as AddressBookResource;
class DeleteAddress
{
public function execute(string $companyId, string $id) {
// Get address
$address = Company::findOrfail($companyId)->addressBook()->findOrFail($id);
if($address->delete()){
// Return single address as a resource
return new AddressBookResource($address);
}
}
}
@@ -1,19 +0,0 @@
<?php
namespace App\Classes\ControllersLogic\Companies\AddressBook;
use App\Models\Company;
use App\Http\Resources\AddressBook as AddressBookResource;
class ListAddresses
{
public function execute(string $companyId) {
// Get addresses
$addresses = Company::findOrfail($companyId)->addressBook()->orderBy('created_at')->paginate(5);
// Return collection of addresses as a resource
return AddressBookResource::collection($addresses);
}
}
@@ -1,30 +0,0 @@
<?php
namespace App\Classes\ControllersLogic\Companies\AddressBook;
use App\Classes\Objects\AddressObject;
use App\Models\AddressBook;
use App\Models\Company;
use App\Http\Resources\AddressBook as AddressBookResource;
class UpdateAddress
{
public function execute(AddressObject $addressObject) {
$address = $addressObject->getId() !== null ? Company::findOrfail($addressObject->getCompanyId())->addressBook()->findOrFail($addressObject->getId()) : new AddressBook;
$address->company_id = $addressObject->getCompanyId();
$address->reference = $addressObject->getReference();
$address->contact = $addressObject->getContact();
$address->street_one = $addressObject->getStreetOne();
$address->street_two = $addressObject->getStreetTwo();
$address->city = $addressObject->getCity();
$address->state = $addressObject->getState();
$address->post_code = $addressObject->getPostCode();
$address->country = $addressObject->getCountry();
if($address->save()){
return new AddressBookResource($address);
}
}
}
@@ -1,19 +0,0 @@
<?php
namespace App\Classes\ControllersLogic\Companies;
use App\Models\Company;
use App\Http\Resources\Company as CompanyResource;
class CompanyProfile
{
public function execute(string $id) {
// Get company
$company = Company::findOrFail($id);
// Return single company as a resource
return new CompanyResource($company);
}
}
@@ -1,31 +0,0 @@
<?php
namespace App\Classes\ControllersLogic\Companies;
use App\Classes\Modules\Documents\DeleteAllDocuments;
use App\Models\Company;
use App\Http\Resources\Company as CompanyResource;
use App\Classes\Constants;
class DeleteCompany
{
public function execute(string $id) {
// Get company
$company = Company::findOrFail($id);
foreach (Constants::COMPANY_DOCUMENTS as $documentType) {
(new DeleteAllDocuments(Constants::MODULE_TYPES['company'], $id, $documentType))->execute();
}
if($company->delete()){
// Return single compnay as a resource
return new CompanyResource($company);
}
}
}
@@ -1,19 +0,0 @@
<?php
namespace App\Classes\ControllersLogic\Companies;
use App\Models\Company;
use App\Http\Resources\Company as CompanyResource;
class ListCompanies
{
public function execute() {
// Get company
$companies = Company::orderBy('created_at')->paginate(10);
// Return collection of companies as a resource
return CompanyResource::collection($companies);
}
}
@@ -1,24 +0,0 @@
<?php
namespace App\Classes\ControllersLogic\Contacts;
use App\Models\Contact;
use App\Http\Resources\Contact as ContactResource;
class DeleteContact
{
public function execute(string $id) {
// Get address
$contact= Contact::findOrFail($id);
if($contact->delete()){
// Return single address as a resource
return new ContactResource($contact);
}
}
}
@@ -1,19 +0,0 @@
<?php
namespace App\Classes\ControllersLogic\Contacts;
use App\Models\Contact;
use App\Http\Resources\Contact as ContactResource;
class ListContacts
{
public function execute(int $type, string $reference) {
// Get contacts
$contacts = Contact::where('type', $type)->where('reference_id', $reference)->orderBy('created_at')->paginate(5);
// Return collection of contacts as a resource
return ContactResource::collection($contacts);
}
}
@@ -1,46 +0,0 @@
<?php
namespace App\Classes\ControllersLogic\Contacts;
use App\Models\Contact;
use App\Http\Resources\Contact as ContactResource;
use Illuminate\Http\Request;
class UpdateContact
{
/** @var Contact */
private $repository;
/**
* UpdateContact constructor.
* @param Contact $repository
*/
public function __construct(Contact $repository)
{
$this->repository = $repository;
}
public function execute(Request $request, int $type, string $reference) {
$contact = $this->repository->findOrFail($id);
$contact->type = $type;
$contact->reference_id = $reference;
$contact->name = $request->input('name');
$contact->designation = $request->input('designation');
$contact->contact = $request->input('contact');
$contact->email = $request->input('email');
$contact = $request->method() === 'PUT' ? Contact::findOrFail($request->input('id')) : new Contact;
if($contact->save()){
return new ContactResource($contact);
}
}
}
@@ -0,0 +1,41 @@
<?php
/**
* Created by PhpStorm.
* User: user
* Date: 02/05/2019
* Time: 10:09 AM
*/
namespace App\Classes\Modules\AddressBook\Services;
use App\Models\Company;
use App\Http\Resources\AddressBook as AddressBookResource;
class DefaultsAddressBook
{
/** @var Company */
private $repository;
/**
* DefaultsAddressBook constructor.
* @param Company $repository
*/
public function __construct(Company $repository)
{
$this->repository = $repository;
}
public function execute(String $companyId, String $id){
$this->repository->findOrfail($companyId)->addressBook()->update(['default' => 0]);
$address = $this->repository->findOrfail($companyId)->addressBook()->findOrFail($id);
$address->default = 1;
if($address->save()){
return new AddressBookResource($address);
}
}
}
@@ -0,0 +1,41 @@
<?php
/**
* Created by PhpStorm.
* User: user
* Date: 03/05/2019
* Time: 10:20 AM
*/
namespace App\Classes\Modules\AddressBook\Services;
use App\Models\Company;
use App\Http\Resources\AddressBook as AddressBookResource;
class DeletesAddressBook
{
/** @var Company */
private $repository;
/**
* DeletesAddressBook constructor.
* @param Company $repository
*/
public function __construct(Company $repository)
{
$this->repository = $repository;
}
public function execute(String $companyId, String $id){
$address = $this->repository->findOrFail($companyId)->addressBook()->findOrFail($id);
if($address->delete()){
// Return single address as a resource
return new AddressBookResource($address);
}
}
}
@@ -0,0 +1,36 @@
<?php
/**
* Created by PhpStorm.
* User: user
* Date: 30/04/2019
* Time: 4:40 PM
*/
namespace App\Classes\Modules\AddressBook\Services;
use App\Models\AddressBook;
use App\Http\Resources\AddressBook as AddressBookResource;
use App\Models\Company;
class ListsAddressBook
{
/** @var Company */
private $repository;
/**
* ListsAddressBook constructor.
* @param Company $repository
*/
public function __construct(Company $repository)
{
$this->repository = $repository;
}
public function execute(String $companyId){
$addresses = $this->repository->findOrfail($companyId)->addressBook()->orderBy('created_at')->paginate(5);
return AddressBookResource::collection($addresses);
}
}
@@ -0,0 +1,52 @@
<?php
/**
* Created by PhpStorm.
* User: user
* Date: 03/05/2019
* Time: 10:20 AM
*/
namespace App\Classes\Modules\AddressBook\Services;
use App\Models\Company;
use App\Http\Resources\AddressBook as AddressBookResource;
use Illuminate\Http\Request;
class UpdatesAddressBook
{
/** @var Company */
private $repository;
/**
* UpdatesAddressBook constructor.
* @param Company $repository
*/
public function __construct(Company $repository)
{
$this->repository = $repository;
}
public function execute(String $companyId, Request $request){
$address = $this->repository->findOrfail($companyId)->addressBook()->findOrFail($request->input('id'));
$address->company_id = $companyId;
$address->reference = $request->input('reference');
$address->contact = $request->input('contact');
$address->street_one = $request->input('street_one');
$address->street_two = $request->input('street_two');
$address->city = $request->input('city');
$address->state = $request->input('state');
$address->post_code = $request->input('post_code');
$address->country = $request->input('country');
if($address->save()){
return new AddressBookResource($address);
}
}
}
@@ -24,6 +24,7 @@ class CreatesCompany
$model = $this->repository->create([
'marking' => $object->getMarking(),
'name' => $object->getName(),
'email' => $object->getEmail(),
'registration_no' => $object->getRegistrationNumber(),
'tax_no' => $object->getTaxNumber(),
]);
@@ -0,0 +1,51 @@
<?php
/**
* Created by PhpStorm.
* User: user
* Date: 30/04/2019
* Time: 2:29 PM
*/
namespace App\Classes\Modules\Companies\Services;
use App\Classes\Constants;
use App\Classes\Modules\Documents\DeleteAllDocuments;
use App\Models\Company;
use App\Http\Resources\Company as CompanyResource;
class DeletesCompany
{
/** @var Company */
private $repository;
/**
* DeletesCompany constructor.
* @param Company $repository
*/
public function __construct(Company $repository)
{
$this->repository = $repository;
}
public function execute(string $id)
{
$company = $this->repository->findOrFail($id);
foreach (Constants::COMPANY_DOCUMENTS as $documentType) {
(new DeleteAllDocuments(Constants::MODULE_TYPES['company'], $id, $documentType))->execute();
}
if ($company->delete()) {
// Return single compnay as a resource
return new CompanyResource($company);
}
}
}
@@ -0,0 +1,38 @@
<?php
/**
* Created by PhpStorm.
* User: user
* Date: 29/04/2019
* Time: 11:46 AM
*/
namespace App\Classes\Modules\Companies\Services;
use App\Models\Company;
use App\Http\Resources\Company as CompanyResource;
class ListsCompany
{
/** @var Company */
private $repository;
/**
* ListsCompany constructor.
* @param Company $repository
*/
public function __construct(Company $repository)
{
$this->repository = $repository;
}
public function execute(){
$companies = $this->repository->orderBy('created_at')->paginate(10);
return CompanyResource::collection($companies);
}
}
@@ -0,0 +1,36 @@
<?php
/**
* Created by PhpStorm.
* User: user
* Date: 30/04/2019
* Time: 9:49 AM
*/
namespace App\Classes\Modules\Companies\Services;
use App\Models\Company;
use App\Http\Resources\Company as CompanyResource;
class ProfilesCompany
{
/** @var Company */
private $repository;
/**
* ProfilesCompany constructor.
* @param Company $repository
*/
public function __construct(Company $repository)
{
$this->repository = $repository;
}
public function execute(string $id){
$company = $this->repository->findOrFail($id);
return new CompanyResource($company);
}
}
@@ -0,0 +1,40 @@
<?php
/**
* Created by PhpStorm.
* User: user
* Date: 29/04/2019
* Time: 2:13 PM
*/
namespace App\Classes\Modules\Companies\Services;
use App\Models\Company;
use App\Http\Resources\Company as CompanyResource;
use Illuminate\Http\Request;
class SearchesCompany
{
/** @var Company */
private $repository;
/**
* SearchesCompany constructor.
* @param Company $repository
*/
public function __construct(Company $repository)
{
$this->repository = $repository;
}
public function execute(Request $request){
$companies = $this->repository->where('name', 'LIKE', "%".$request->input('query')."%")
->orWhere('marking', 'LIKE', "%".$request->input('query')."%")->paginate(10);
return CompanyResource::collection($companies);
}
}
@@ -1,28 +1,33 @@
<?php
/**
* Created by PhpStorm.
* User: user
* Date: 30/04/2019
* Time: 11:43 AM
*/
namespace App\Classes\ControllersLogic\Companies;
namespace App\Classes\Modules\Companies\Services;
use App\Classes\ControllersLogic\Companies\AddressBook\UpdateAddress;
use App\Classes\Modules\AddressBook\DataTransferObjects\AddressBookObject;
use App\Classes\Constants;
use App\Classes\Modules\AddressBook\Services\CreatesAddress;
use App\Classes\Modules\AddressBook\DataTransferObjects\AddressBookObject;
use App\Classes\Modules\Documents\UpdateDocuments;
use App\Models\AddressBook;
use App\Models\Company;
use App\Http\Resources\Company as CompanyResource;
use Illuminate\Http\Request;
use App\Classes\Constants;
use App\Http\Resources\Company as CompanyResource;
class UpdateCompany
class UpdatesCompany
{
/** @var AddressBook */
/** @var AddressBook */
private $repository;
/** @var CreatesAddress */
/** @var CreatesAddress */
private $createsAddress;
/**
* UpdateCompany constructor.
* UpdatesCompany constructor.
* @param AddressBook $repository
* @param CreatesAddress $createsAddress
*/
@@ -33,9 +38,10 @@ class UpdateCompany
}
public function execute(Request $request) {
$company = $request->method() === 'PUT' ? Company::findOrFail($request->input('id')) : new company;
$company->fill($request->except(array_merge(Constants::COMPANY_DOCUMENTS, Constants::ADDRESS_FIELDS)));
public function execute(Request $request){
$company = $request->method() === 'PUT' ? Company::findOrFail($request->input('id')) : new company;
$company->fill($request->except(array_merge(Constants::COMPANY_DOCUMENTS, Constants::ADDRESS_FIELDS)));
if($company->save()){
@@ -60,14 +66,9 @@ class UpdateCompany
$request->input('state'), $request->input('post_code'), $request->input('country'), false, true);
$this->createsAddress->execute($billing);
return new CompanyResource($company);
}
}
public function updateDocuments(){
}
}
}
@@ -1,6 +1,6 @@
<?php
namespace App\Modules\Contacts\DataTransferObjects;
namespace App\Classes\Modules\Contacts\DataTransferObjects;
class ContactObject
{
@@ -0,0 +1,42 @@
<?php
/**
* Created by PhpStorm.
* User: user
* Date: 09/05/2019
* Time: 11:51 AM
*/
namespace App\Classes\Modules\Contacts\Services;
use App\Models\Contact;
use App\Http\Resources\Contact as ContactResource;
class DeletesContact
{
/** @var Contact */
private $repository;
/**
* DeletesContact constructor.
* @param Contact $repository
*/
public function __construct(Contact $repository)
{
$this->repository = $repository;
}
public function execute(String $id){
$contact = $this->repository->findOrFail($id);
if($contact->delete()){
// Return single address as a resource
return new ContactResource($contact);
}
}
}
@@ -30,7 +30,7 @@ class ListsContact
public function execute(int $type, int $referenceId){
$contacts = $this->repository->where('type', $type)
->where('reference_id', $referenceId)->get();
->where('reference_id', $referenceId)->orderBy('created_at')->paginate(5);
// Return collection of contacts as a resource
return ContactResource::collection($contacts);
@@ -0,0 +1,39 @@
<?php
/**
* Created by PhpStorm.
* User: user
* Date: 07/05/2019
* Time: 11:18 AM
*/
namespace App\Classes\Modules\ControllersLogic\Companies\AddressBook;
use App\Classes\Modules\AddressBook\DataTransferObjects\AddressBookObject;
use App\Classes\Modules\AddressBook\Services\CreatesAddress;
use Illuminate\Http\Request;
class CreateAddressBookLogic
{
/** @var CreatesAddress */
private $CreatesAddress;
/**
* CreateAddressBookLogic constructor.
* @param CreatesAddress $CreatesAddress
*/
public function __construct(CreatesAddress $CreatesAddress)
{
$this->CreatesAddress = $CreatesAddress;
}
public function execute(String $companyId, Request $request){
$object = new AddressBookObject(null, $companyId, $request->input('reference'), $request->input('contact'),
$request->input('street_one'), $request->input('street_two'), $request->input('city'),
$request->input('state'), $request->input('post_code'), $request->input('country'), false, true);
return $this->CreatesAddress->execute($object);
}
}
@@ -0,0 +1,33 @@
<?php
/**
* Created by PhpStorm.
* User: user
* Date: 02/05/2019
* Time: 10:17 AM
*/
namespace App\Classes\Modules\ControllersLogic\Companies\AddressBook;
use App\Classes\Modules\AddressBook\Services\DefaultsAddressBook;
class DefaultAddressBookLogic
{
/** @var DefaultsAddressBook */
private $DefaultsAddressBook;
/**
* DefaultAddressBookLogic constructor.
* @param DefaultsAddressBook $DefaultsAddressBook
*/
public function __construct(DefaultsAddressBook $DefaultsAddressBook)
{
$this->DefaultsAddressBook = $DefaultsAddressBook;
}
public function execute(String $companyId, String $id){
return $this->DefaultsAddressBook->execute($companyId, $id);
}
}
@@ -0,0 +1,32 @@
<?php
/**
* Created by PhpStorm.
* User: user
* Date: 03/05/2019
* Time: 10:20 AM
*/
namespace App\Classes\Modules\ControllersLogic\Companies\AddressBook;
use App\Classes\Modules\AddressBook\Services\DeletesAddressBook;
class DeleteAddressBookLogic
{
/** @var DeletesAddressBook */
private $DeletesAddressBook;
/**
* DeleteAddressBookLogic constructor.
* @param DeletesAddressBook $DeletesAddressBook
*/
public function __construct(DeletesAddressBook $DeletesAddressBook)
{
$this->DeletesAddressBook = $DeletesAddressBook;
}
public function execute(String $companyId, String $id){
return $this->DeletesAddressBook->execute($id, $companyId);
}
}
@@ -0,0 +1,34 @@
<?php
/**
* Created by PhpStorm.
* User: user
* Date: 30/04/2019
* Time: 4:54 PM
*/
namespace App\Classes\Modules\ControllersLogic\Companies\AddressBook;
use App\Classes\Modules\AddressBook\Services\ListsAddressBook;
class ListAddressBookLogic
{
/** @var ListsAddressBook */
private $ListsAddressBook;
/**
* ListAddressBookLogic constructor.
* @param ListsAddressBook $ListsAddressBook
*/
public function __construct(ListsAddressBook $ListsAddressBook)
{
$this->ListsAddressBook = $ListsAddressBook;
}
public function execute(String $companyId){
return $this->ListsAddressBook->execute($companyId);
}
}
@@ -0,0 +1,35 @@
<?php
/**
* Created by PhpStorm.
* User: user
* Date: 03/05/2019
* Time: 10:19 AM
*/
namespace App\Classes\Modules\ControllersLogic\Companies\AddressBook;
use App\Classes\Modules\AddressBook\Services\UpdatesAddressBook;
use Illuminate\Http\Request;
class UpdateAddressBookLogic
{
/** @var UpdatesAddressBook */
private $UpdatesAddressBook;
/**
* UpdateAddressBookLogic constructor.
* @param UpdatesAddressBook $UpdatesAddressBook
*/
public function __construct(UpdatesAddressBook $UpdatesAddressBook)
{
$this->UpdatesAddressBook = $UpdatesAddressBook;
}
public function execute(String $companyId, Request $request){
return $this->UpdatesAddressBook->execute($companyId, $request);
}
}
@@ -60,7 +60,7 @@ class CreateCompanyLogic
$company = $this->createsCompany->execute($object);
$address = new AddressBookObject(null, $company->id, $request->input('name'), $request->input('contact'),
$request->input('street_one'), $request->input('stret_two'), $request->input('city'),
$request->input('street_one'), $request->input('street_two'), $request->input('city'),
$request->input('state'), $request->input('post_code'), $request->input('country'), false, true);
$this->createsAddress->execute($address);
@@ -0,0 +1,34 @@
<?php
/**
* Created by PhpStorm.
* User: user
* Date: 30/04/2019
* Time: 2:29 PM
*/
namespace App\Classes\Modules\ControllersLogic\Companies;
use App\Classes\Modules\Companies\Services\DeletesCompany;
class DeleteCompanyLogic
{
/** @var DeletesCompany */
private $DeletesCompany;
/**
* DeleteCompanyLogic constructor.
* @param DeletesCompany $DeletesCompany
*/
public function __construct(DeletesCompany $DeletesCompany)
{
$this->DeletesCompany = $DeletesCompany;
}
public function execute(String $id){
return $this->DeletesCompany->execute($id);
}
}
@@ -0,0 +1,33 @@
<?php
/**
* Created by PhpStorm.
* User: user
* Date: 29/04/2019
* Time: 11:44 AM
*/
namespace App\Classes\Modules\ControllersLogic\Companies;
use App\Classes\Modules\Companies\Services\ListsCompany;
class ListCompanyLogic
{
/** @var ListsCompany */
private $ListCompany;
/**
* CompanyListLogic constructor.
* @param ListsCompany $ListCompany
*/
public function __construct(ListsCompany $ListCompany)
{
$this->ListCompany = $ListCompany;
}
public function execute(){
return $this->ListCompany->execute();
}
}
@@ -0,0 +1,33 @@
<?php
/**
* Created by PhpStorm.
* User: user
* Date: 30/04/2019
* Time: 9:48 AM
*/
namespace App\Classes\Modules\ControllersLogic\Companies;
use App\Classes\Modules\Companies\Services\ProfilesCompany;
class ProfileCompanyLogic
{
/** @var ProfilesCompany */
private $ProfilesCompany;
/**
* ProfileCompanyLogic constructor.
* @param ProfilesCompany $ProfilesCompany
*/
public function __construct(ProfilesCompany $ProfilesCompany)
{
$this->ProfilesCompany = $ProfilesCompany;
}
public function execute(string $id){
return $this->ProfilesCompany->execute($id);
}
}
@@ -0,0 +1,35 @@
<?php
/**
* Created by PhpStorm.
* User: user
* Date: 29/04/2019
* Time: 2:11 PM
*/
namespace App\Classes\Modules\ControllersLogic\Companies;
use App\Classes\Modules\Companies\Services\SearchesCompany;
use Illuminate\Http\Request;
class SearchCompanyLogic
{
/** @var SearchesCompany */
private $SearchesCompany;
/**
* SearchCompanyLogic constructor.
* @param SearchesCompany $SearchesCompany
*/
public function __construct(SearchesCompany $SearchesCompany)
{
$this->SearchesCompany = $SearchesCompany;
}
public function execute(Request $request){
return $this->SearchesCompany->execute($request);
}
}
@@ -0,0 +1,34 @@
<?php
/**
* Created by PhpStorm.
* User: user
* Date: 30/04/2019
* Time: 11:42 AM
*/
namespace App\Classes\Modules\ControllersLogic\Companies;
use App\Classes\Modules\Companies\Services\UpdatesCompany;
use Illuminate\Http\Request;
class UpdateCompanyLogic
{
/** @var UpdatesCompany */
private $UpdatesCompany;
/**
* UpdateCompanyLogic constructor.
* @param UpdatesCompany $UpdatesCompany
*/
public function __construct(UpdatesCompany $UpdatesCompany)
{
$this->UpdatesCompany = $UpdatesCompany;
}
public function execute(Request $request){
return $this->UpdatesCompany->execute($request);
}
}
@@ -27,7 +27,7 @@ class CreateContactLogic
{
try{
$object = new ContactObject($request->input('name'), $request->input('designation'), $request->input('contact'), $request->input('email'));
$object = new ContactObject($type, $referenceId, $request->input('name'), $request->input('designation'), $request->input('contact'), $request->input('email'));
return $this->createContact->execute($object, $type, $referenceId);
}
@@ -0,0 +1,35 @@
<?php
/**
* Created by PhpStorm.
* User: user
* Date: 09/05/2019
* Time: 11:51 AM
*/
namespace App\Modules\ControllerLogic\Contacts;
use App\Classes\Modules\Contacts\Services\DeletesContact;
class DeleteContactLogic
{
/** @var DeletesContact */
private $DeletesContact;
/**
* DeleteContactLogic constructor.
* @param DeletesContact $DeletesContact
*/
public function __construct(DeletesContact $DeletesContact)
{
$this->DeletesContact = $DeletesContact;
}
public function execute(String $id){
return $this->DeletesContact->execute($id);
}
}
@@ -28,10 +28,9 @@ class UpdateContactLogic
}
public function execute(int $id, Request $request)
public function execute(int $id, string $referenceId, int $type, Request $request)
{
$object = new ContactObject($request->input('name'), $request->input('designation'), $request->input('contact'), $request->input('email'));
$object = new ContactObject($type, $referenceId, $request->input('name'), $request->input('designation'), $request->input('contact'), $request->input('email'));
return $this->updateContact->execute($id, $object);
}
}
@@ -0,0 +1,22 @@
<?php
/**
* Created by PhpStorm.
* User: user
* Date: 07/05/2019
* Time: 11:17 AM
*/
namespace App\Http\Controllers\Companies\AddressBook;
use App\Classes\Modules\ControllersLogic\Companies\AddressBook\CreateAddressBookLogic;
use Illuminate\Http\Request;
class CreateAddressBookController
{
public function store(String $companyId, Request $request, CreateAddressBookLogic $logic){
return $logic->execute($companyId,$request);
}
}
@@ -0,0 +1,21 @@
<?php
/**
* Created by PhpStorm.
* User: user
* Date: 02/05/2019
* Time: 10:23 AM
*/
namespace App\Http\Controllers\Companies\AddressBook;
use App\Classes\Modules\ControllersLogic\Companies\AddressBook\DefaultAddressBookLogic;
class DefaultAddressBookController
{
public function default(String $companyId, String $id, DefaultAddressBookLogic $logic){
return $logic->execute($companyId,$id);
}
}
@@ -0,0 +1,20 @@
<?php
/**
* Created by PhpStorm.
* User: user
* Date: 03/05/2019
* Time: 10:19 AM
*/
namespace App\Http\Controllers\Companies\AddressBook;
use App\Classes\Modules\ControllersLogic\Companies\AddressBook\DeleteAddressBookLogic;
class DeleteAddressBookController
{
public function destroy(String $companyId, String $id, DeleteAddressBookLogic $logic){
return $logic->execute($id,$companyId);
}
}
@@ -0,0 +1,22 @@
<?php
/**
* Created by PhpStorm.
* User: user
* Date: 30/04/2019
* Time: 5:15 PM
*/
namespace App\Http\Controllers\Companies\AddressBook;
use App\Classes\Modules\ControllersLogic\Companies\AddressBook\ListAddressBookLogic;
class ListAddressBookController
{
public function list(String $companyId, ListAddressBookLogic $logic){
return $logic->execute($companyId);
}
}
@@ -0,0 +1,21 @@
<?php
/**
* Created by PhpStorm.
* User: user
* Date: 03/05/2019
* Time: 10:18 AM
*/
namespace App\Http\Controllers\Companies\AddressBook;
use App\Classes\Modules\ControllersLogic\Companies\AddressBook\UpdateAddressBookLogic;
use Illuminate\Http\Request;
class UpdateAddressBookController
{
public function update(String $companyId, Request $request, UpdateAddressBookLogic $logic){
return $logic->execute($companyId,$request);
}
}
@@ -1,76 +0,0 @@
<?php
namespace App\Http\Controllers\Companies;
use App\Classes\Objects\AddressObject;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use App\Http\Resources\AddressBook as AddressBookResource;
use App\Classes\ControllersLogic\Companies\AddressBook\ListAddresses;
use App\Classes\ControllersLogic\Companies\AddressBook\DeleteAddress;
use App\Classes\ControllersLogic\Companies\AddressBook\UpdateAddress;
use App\Classes\ControllersLogic\Companies\AddressBook\DefaultAddress;
class AddressBookController extends Controller
{
/**
* Display a listing of the resource.
* @param string $companyId
* @return \Illuminate\Http\Resources\Json\AnonymousResourceCollection
*/
public function index(string $companyId) {
return (new ListAddresses())->execute($companyId);
}
/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param string $companyId
* @return AddressBookResource
*/
public function store(Request $request, string $companyId)
{
return (new UpdateAddress())->execute(new AddressObject(
$companyId,
$request->input('street_one'),
$request->input('street_two'),
$request->input('city'),
$request->input('state'),
$request->input('post_code'),
$request->input('country'),
$request->input('id'),
$request->input('reference'),
$request->input('contact')
));
}
/**
* Set default address
*
* @param string $id
* @param string $companyId
* @return AddressBookResource
*/
public function default(string $companyId, string $id)
{
return (new DefaultAddress())->execute($companyId, $id);
}
/**
* Remove the specified resource from storage.
*
* @param string $companyId
* @param string $id
*
* @return AddressBookResource
*/
public function destroy(string $companyId, string $id): AddressBookResource {
return (new DeleteAddress())->execute($companyId, $id);
}
}
@@ -1,67 +0,0 @@
<?php
namespace App\Http\Controllers\Companies;
use App\Models\Company;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use App\Http\Resources\Company as CompanyResource;
use App\Classes\ControllersLogic\Companies\ListCompanies;
use App\Classes\ControllersLogic\Companies\UpdateCompany;
use App\Classes\ControllersLogic\Companies\CompanyProfile;
use App\Classes\ControllersLogic\Companies\DeleteCompany;
class CompanyController extends Controller
{
/**
* Display a listing of the resource.
*
*/
public function index(?bool $pagination = true) {
return (new ListCompanies())->execute($pagination);
}
/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
*
* @param UpdateCompany $logic
* @return CompanyResource
*/
public function store(Request $request, UpdateCompany $logic): CompanyResource {
return $logic->execute($request);
}
/**
* Display the specified resource.
*
* @param int $id
*
* @return CompanyResource
*/
public function show($id): CompanyResource {
return (new CompanyProfile())->execute($id);
}
/**
* Remove the specified resource from storage.
*
* @param int $id
*
* @return CompanyResource
*/
public function destroy($id): CompanyResource {
return (new DeleteCompany())->execute($id);
}
public function search(Request $request){
// Get company
$companies = Company::where('name', 'LIKE', "%".$request->input('query')."%")
->orWhere('marking', 'LIKE', "%".$request->input('query')."%")->paginate(10);
// Return collection of companies as a resource
return CompanyResource::collection($companies);
}
}
@@ -0,0 +1,21 @@
<?php
/**
* Created by PhpStorm.
* User: user
* Date: 30/04/2019
* Time: 2:29 PM
*/
namespace App\Http\Controllers\Companies;
use App\Classes\Modules\ControllersLogic\Companies\DeleteCompanyLogic;
class DeleteCompanyController
{
public function destroy(String $id, DeleteCompanyLogic $logic){
return $logic->execute($id);
}
}
@@ -0,0 +1,20 @@
<?php
/**
* Created by PhpStorm.
* User: user
* Date: 29/04/2019
* Time: 11:43 AM
*/
namespace App\Http\Controllers\Companies;
use App\Classes\Modules\ControllersLogic\Companies\ListCompanyLogic;
class ListCompanyController
{
public function list(ListCompanyLogic $logic){
return $logic->execute();
}
}
@@ -0,0 +1,22 @@
<?php
/**
* Created by PhpStorm.
* User: user
* Date: 30/04/2019
* Time: 9:47 AM
*/
namespace App\Http\Controllers\Companies;
use App\Classes\Modules\ControllersLogic\Companies\ProfileCompanyLogic;
class ProfileCompanyController
{
public function show(string $id, ProfileCompanyLogic $logic){
return $logic->execute($id);
}
}
@@ -0,0 +1,22 @@
<?php
/**
* Created by PhpStorm.
* User: user
* Date: 29/04/2019
* Time: 2:10 PM
*/
namespace App\Http\Controllers\Companies;
use App\Classes\Modules\ControllersLogic\Companies\SearchCompanyLogic;
use Illuminate\Http\Request;
class SearchCompanyController
{
public function search(Request $request , SearchCompanyLogic $logic){
return $logic->execute($request);
}
}
@@ -0,0 +1,21 @@
<?php
/**
* Created by PhpStorm.
* User: user
* Date: 30/04/2019
* Time: 11:42 AM
*/
namespace App\Http\Controllers\Companies;
use App\Classes\Modules\ControllersLogic\Companies\UpdateCompanyLogic;
use Illuminate\Http\Request;
class UpdateCompanyController
{
public function update(Request $request, UpdateCompanyLogic $logic){
return $logic->execute($request);
}
}
@@ -1,53 +0,0 @@
<?php
namespace App\Http\Controllers\Contacts;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use App\Http\Resources\Contact as ContactResource;
use App\Classes\Constants;
use App\Classes\ControllersLogic\Contacts\ListContacts;
use App\Classes\ControllersLogic\Contacts\UpdateContact;
use App\Classes\ControllersLogic\Contacts\DeleteContact;
class ContactController extends Controller
{
/**
* Display a listing of the resource.
* @param string $type
* @param string $reference
* @return \Illuminate\Http\Resources\Json\AnonymousResourceCollection
*/
public function index(string $type, string $reference) {
return (new ListContacts())->execute(Constants::MODULE_TYPES[$type], $reference);
}
/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param string $type
* @param string $reference
* @return ContactResource
*/
public function store(Request $request, string $type, string $reference)
{
return (new UpdateContact())->execute($request, Constants::MODULE_TYPES[$type], $reference);
}
/**
* Remove the specified resource from storage.
*
* @param string $id
*
* @return ContactResource
*/
public function destroy(string $id): ContactResource {
return (new DeleteContact())->execute($id);
}
}
@@ -9,6 +9,7 @@ use App\Classes\Modules\ControllerLogic\Contacts\CreateContactLogic;
class CreateContactController
{
public function create(string $type, int $referencesId, Request $request, CreateContactLogic $logic){
return $logic->execute(Constants::MODULE_TYPES[$type], $referencesId, $request);
}
@@ -0,0 +1,18 @@
<?php
/**
* Created by PhpStorm.
* User: user
* Date: 09/05/2019
* Time: 11:51 AM
*/
namespace App\Http\Controllers\Contacts;
use App\Modules\ControllerLogic\Contacts\DeleteContactLogic;
class DeleteContactController
{
public function destroy(String $id, DeleteContactLogic $logic ){
return $logic->execute($id);
}
}
@@ -8,8 +8,6 @@
namespace App\Http\Controllers\Contacts;
use App\Modules\ControllerLogic\Contacts\ListContactLogic;
@@ -9,13 +9,15 @@
namespace App\Http\Controllers\Contacts;
use App\Classes\Constants;
use App\Modules\ControllerLogic\Contacts\UpdateContactLogic;
use Illuminate\Http\Request;
class UpdateContactController
{
public function update(int $id,Request $request, UpdateContactLogic $logic){
return $logic->execute($id, $request);
public function update(string $type, string $referenceId, int $id, Request $request, UpdateContactLogic $logic){
return $logic->execute($id,$referenceId, Constants::MODULE_TYPES[$type], $request);
}
}
+1 -1
View File
@@ -19,7 +19,7 @@ class Contact extends JsonResource
'id' => $this->id,
'type' => $this->type,
'reference_id' => $this->reference_id,
'name' => $this->first_name.' '. $this->last_name,
'name' => $this->name,
'designation' => $this->designation,
'contact' => $this->contact,
'email' => $this->email,
+15 -15
View File
@@ -35,40 +35,40 @@ Route::group(['middleware' => 'api', 'prefix' => 'v1', 'as' => 'api.'], function
Route::get('/list/{pagination?}', 'CompanyController@index')->name('list');
// search companies
Route::get('/search', 'CompanyController@search')->name('search');
Route::get('/search', 'SearchCompanyController@search')->name('search');
// List single company
Route::get('{id}/profile', 'CompanyController@show')->name('profile');
Route::get('{id}/profile', 'ProfileCompanyController@show')->name('profile');
// Create new company
Route::post('/', 'CreateCompanyController@create')->name('create');
// Update company
Route::put('{id}', 'CompanyController@store')->name('update');
Route::put('{id}', 'UpdateCompanyController@update')->name('update');
// Delete company
Route::delete('{id}', 'CompanyController@destroy')->name('delete');
Route::delete('{id}', 'DeleteCompanyController@destroy')->name('delete');
Route::get('{id}/order/{category}/list', 'CompanyOrderController@list')
->where('category', 'processing|shipping|receiving|complete|cancel')->name('order.list');
// Companies Address Book Routes
Route::group(['prefix' => 'address-book', 'as' => 'addressBook.'], function () {
Route::group(['prefix' => 'address-book', 'as' => 'addressBook.', 'namespace' => 'AddressBook'], function () {
// List addresses in company's address book
Route::get('{companyId}', 'AddressBookController@index')->name('list');
Route::get('{companyId}', 'ListAddressBookController@list')->name('list');
// Create new address in company's address book
Route::post('{companyId}', 'AddressBookController@store')->name('create');
Route::post('{companyId}', 'CreateAddressBookController@store')->name('create');
// Update address in company's address book
Route::put('{companyId}/{id}', 'AddressBookController@store')->name('update');
Route::put('{companyId}/{id}', 'UpdateAddressBookController@update')->name('update');
// sets default delivery address
Route::put('{companyId}/{id}/default', 'AddressBookController@default')->name('default');
Route::put('{companyId}/{id}/default', 'DefaultAddressBookController@default')->name('default');
// Delete address from company's address book
Route::delete('{companyId}/{id}', 'AddressBookController@destroy')->name('delete');
Route::delete('{companyId}/{id}', 'DeleteAddressBookController@destroy')->name('delete');
});
});
@@ -77,16 +77,16 @@ Route::group(['middleware' => 'api', 'prefix' => 'v1', 'as' => 'api.'], function
Route::group(['prefix' => 'contact', 'as' => 'contact.', 'namespace' => 'Contacts'], function () {
// List contacts
Route::get('list/{type}/{reference}', 'ContactController@index')->name('list');
Route::get('list/{type}/{reference}', 'ListContactController@list')->name('list');
// Create new contact
Route::post('{type}/{reference}', 'ContactController@store')->name('create');
Route::post('{type}/{reference}', 'CreateContactController@create')->name('create');
// Update contact
Route::put('{type}/{reference}/{id}', 'ContactController@store')->name('update');
Route::put('{type}/{reference}/{id}', 'UpdateContactController@update')->name('update');
// Delete contact
Route::delete('{id}', 'ContactController@destroy')->name('delete');
Route::delete('{id}', 'DeleteContactController@destroy')->name('delete');
});
@@ -125,7 +125,7 @@ Route::group(['middleware' => 'api', 'prefix' => 'v1', 'as' => 'api.'], function
Route::post('/{orderId}/update', 'updateOrderStepController@update')->name('step.update');
Route::post('/{orderId}/packing-list', 'UpdatePackingListController@update')->name('packages.update');
Route::post('/{orderId}/packing-list', 'OrderController@updatePackingList')->name('packages.update');
Route::post('/{orderId}/shipping-arrangement', 'OrderController@orderShippingArrangement')->name('shipping.arrangement.create');
Route::post('/{orderId}/shipping-arrangement/reschedule', 'OrderController@rescheduleShipping')->name('shipping.arrangement.reschedule');