mirror of
				https://github.com/crater-invoice/crater.git
				synced 2025-10-31 05:31:10 -04:00 
			
		
		
		
	build version 400
This commit is contained in:
		
							
								
								
									
										127
									
								
								app/Http/Controllers/V1/Settings/CompanyController.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										127
									
								
								app/Http/Controllers/V1/Settings/CompanyController.php
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,127 @@ | ||||
| <?php | ||||
|  | ||||
| namespace Crater\Http\Controllers\V1\Settings; | ||||
|  | ||||
| use Illuminate\Http\Request; | ||||
| use Crater\Models\Company; | ||||
| use Crater\Http\Requests\ProfileRequest; | ||||
| use Crater\Http\Requests\CompanyRequest; | ||||
| use Crater\Http\Controllers\Controller; | ||||
| use Illuminate\Support\Facades\Auth; | ||||
|  | ||||
| class CompanyController extends Controller | ||||
| { | ||||
|     /** | ||||
|      * Retrive the Admin account. | ||||
|      * @return \Illuminate\Http\JsonResponse | ||||
|      */ | ||||
|     public function getUser() | ||||
|     { | ||||
|         $user = Auth::user(); | ||||
|  | ||||
|         $user->load([ | ||||
|             'addresses', | ||||
|             'addresses.country', | ||||
|             'company', | ||||
|             'company.address', | ||||
|             'company.address.country' | ||||
|         ]); | ||||
|  | ||||
|         return response()->json([ | ||||
|             'user' => $user | ||||
|         ]); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Update the Admin profile. | ||||
|      * Includes name, email and (or) password | ||||
|      * | ||||
|      * @param  \Crater\Http\Requests\ProfileRequest $request | ||||
|      * @return \Illuminate\Http\JsonResponse | ||||
|      */ | ||||
|     public function updateProfile(ProfileRequest $request) | ||||
|     { | ||||
|         $user = Auth::user(); | ||||
|  | ||||
|         $user->update($request->validated()); | ||||
|  | ||||
|         return response()->json([ | ||||
|             'user' => $user, | ||||
|             'success' => true | ||||
|         ]); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Update Admin Company Details | ||||
|      * @param \Crater\Http\Requests\CompanyRequest $request | ||||
|      * @return \Illuminate\Http\JsonResponse | ||||
|      */ | ||||
|     public function updateCompany(CompanyRequest $request) | ||||
|     { | ||||
|         $company = Auth::user()->company; | ||||
|  | ||||
|         $company->update($request->only('name')); | ||||
|  | ||||
|         $company->address()->updateOrCreate(['company_id' => $company->id], $request->except(['name'])); | ||||
|  | ||||
|         return response()->json([ | ||||
|             'company' => $company, | ||||
|             'success' => true | ||||
|         ]); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Upload the company logo to storage. | ||||
|      * | ||||
|      * @param  \Illuminate\Http\Request $request | ||||
|      * @return \Illuminate\Http\JsonResponse | ||||
|      */ | ||||
|     public function uploadCompanyLogo(Request $request) | ||||
|     { | ||||
|         $data = json_decode($request->company_logo); | ||||
|  | ||||
|         if ($data) { | ||||
|             $company = Company::find($request->header('company')); | ||||
|  | ||||
|             if ($company) { | ||||
|                 $company->clearMediaCollection('logo'); | ||||
|  | ||||
|                 $company->addMediaFromBase64($data->data) | ||||
|                     ->usingFileName($data->name) | ||||
|                     ->toMediaCollection('logo'); | ||||
|             } | ||||
|         } | ||||
|  | ||||
|         return response()->json([ | ||||
|             'success' => true | ||||
|         ]); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Upload the Admin Avatar to public storage. | ||||
|      * | ||||
|      * @param  \Illuminate\Http\Request $request | ||||
|      * @return \Illuminate\Http\JsonResponse | ||||
|      */ | ||||
|     public function uploadAvatar(Request $request) | ||||
|     { | ||||
|         $data = json_decode($request->admin_avatar); | ||||
|  | ||||
|         if ($data) { | ||||
|             $user = auth()->user(); | ||||
|  | ||||
|             if ($user) { | ||||
|                 $user->clearMediaCollection('admin_avatar'); | ||||
|  | ||||
|                 $user->addMediaFromBase64($data->data) | ||||
|                     ->usingFileName($data->name) | ||||
|                     ->toMediaCollection('admin_avatar'); | ||||
|             } | ||||
|         } | ||||
|  | ||||
|         return response()->json([ | ||||
|             'user' => $user, | ||||
|             'success' => true | ||||
|         ]); | ||||
|     } | ||||
| } | ||||
							
								
								
									
										186
									
								
								app/Http/Controllers/V1/Settings/DiskController.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										186
									
								
								app/Http/Controllers/V1/Settings/DiskController.php
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,186 @@ | ||||
| <?php | ||||
|  | ||||
| namespace Crater\Http\Controllers\V1\Settings; | ||||
|  | ||||
| use Crater\Http\Controllers\Controller; | ||||
| use Illuminate\Http\Request; | ||||
| use Crater\Models\FileDisk; | ||||
| use Crater\Http\Requests\DiskEnvironmentRequest; | ||||
| use Illuminate\Http\JsonResponse; | ||||
|  | ||||
| class DiskController extends Controller | ||||
| { | ||||
|     /** | ||||
|      * | ||||
|      * @return JsonResponse | ||||
|      */ | ||||
|     public function index(Request $request) | ||||
|     { | ||||
|         $limit = $request->has('limit') ? $request->limit : 5; | ||||
|         $disks = FileDisk::applyFilters($request->all()) | ||||
|             ->latest() | ||||
|             ->paginateData($limit); | ||||
|  | ||||
|         return response()->json([ | ||||
|             'disks' => $disks, | ||||
|         ]); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * | ||||
|      * @param DiskEnvironmentRequest $request | ||||
|      * @return JsonResponse | ||||
|      */ | ||||
|     public function store(DiskEnvironmentRequest $request) | ||||
|     { | ||||
|         if(!FileDisk::validateCredentials($request->credentials, $request->driver)) { | ||||
|             return response()->json([ | ||||
|                 'success' => false, | ||||
|                 'error' => 'invalid_credentials' | ||||
|             ]); | ||||
|         } | ||||
|  | ||||
|         $disk = FileDisk::createDisk($request); | ||||
|  | ||||
|         return response()->json([ | ||||
|             'success' => true, | ||||
|             'disk' => $disk | ||||
|         ]); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * | ||||
|      * @param Request $request | ||||
|      * @param \Crater\Models\FileDisk $file_disk | ||||
|      * @return JsonResponse | ||||
|      */ | ||||
|     public function update(FileDisk $disk, Request $request) | ||||
|     { | ||||
|         $credentials = $request->credentials; | ||||
|         $driver = $request->driver; | ||||
|  | ||||
|         if($credentials && $driver && $disk->type !== 'SYSTEM') { | ||||
|             if(!FileDisk::validateCredentials($credentials, $driver)) { | ||||
|                 return response()->json([ | ||||
|                     'success' => false, | ||||
|                     'error' => 'invalid_credentials' | ||||
|                 ]); | ||||
|             } | ||||
|  | ||||
|             $disk->updateDisk($request); | ||||
|         } else if($request->set_as_default) { | ||||
|             $disk->setAsDefaultDisk(); | ||||
|         } | ||||
|  | ||||
|         return response()->json([ | ||||
|             'success' => true, | ||||
|             'disk' => $disk | ||||
|         ]); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * @param Request $request | ||||
|      * @return JsonResponse | ||||
|      */ | ||||
|     public function show($disk) | ||||
|     { | ||||
|         $diskData = []; | ||||
|         switch ($disk) { | ||||
|             case 'local': | ||||
|                 $diskData = [ | ||||
|                     'root' => config('filesystems.disks.local.root'), | ||||
|                 ]; | ||||
|                 break; | ||||
|  | ||||
|  | ||||
|             case 's3': | ||||
|                 $diskData = [ | ||||
|                     'key' => '', | ||||
|                     'secret' => '', | ||||
|                     'region' => '', | ||||
|                     'bucket' => '', | ||||
|                     'root' => '', | ||||
|                 ]; | ||||
|                 break; | ||||
|  | ||||
|             case 'doSpaces': | ||||
|                 $diskData = [ | ||||
|                     'key' => '', | ||||
|                     'secret' => '', | ||||
|                     'region' => '', | ||||
|                     'bucket' => '', | ||||
|                     'endpoint' => '', | ||||
|                     'root' => '', | ||||
|                 ]; | ||||
|                 break; | ||||
|  | ||||
|             case 'dropbox': | ||||
|                 $diskData = [ | ||||
|                     'token' => '', | ||||
|                     'key' => '', | ||||
|                     'secret' => '', | ||||
|                     'app' => '', | ||||
|                     'root' => '', | ||||
|                 ]; | ||||
|                 break; | ||||
|         } | ||||
|  | ||||
|         $data = array_merge($diskData); | ||||
|  | ||||
|         return response()->json($data); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Remove the specified resource from storage. | ||||
|      * | ||||
|      * @param  \Crater\Models\FileDisk  $taxType | ||||
|      * @return \Illuminate\Http\Response | ||||
|      */ | ||||
|     public function destroy(FileDisk $disk) | ||||
|     { | ||||
|         if ($disk->setAsDefault() && $disk->type === 'SYSTEM') { | ||||
|             return response()->json([ | ||||
|                 'success' => false | ||||
|             ]); | ||||
|         } | ||||
|  | ||||
|         $disk->delete(); | ||||
|  | ||||
|         return response()->json([ | ||||
|             'success' => true | ||||
|         ]); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * | ||||
|      * @return JsonResponse | ||||
|      */ | ||||
|     public function getDiskDrivers() | ||||
|     { | ||||
|         $drivers = [ | ||||
|             [ | ||||
|                 'name' => 'Local', | ||||
|                 'value' => 'local' | ||||
|             ], | ||||
|             [ | ||||
|                 'name' => 'Amazon S3', | ||||
|                 'value' => 's3' | ||||
|             ], | ||||
|             [ | ||||
|                 'name' => 'Digital Ocean Spaces', | ||||
|                 'value' => 'doSpaces' | ||||
|             ], | ||||
|             [ | ||||
|                 'name' => 'Dropbox', | ||||
|                 'value' => 'dropbox' | ||||
|             ], | ||||
|         ]; | ||||
|  | ||||
|         $default = config('filesystems.default'); | ||||
|  | ||||
|         return response()->json([ | ||||
|             'drivers' => $drivers, | ||||
|             'default' => $default | ||||
|         ]); | ||||
|     } | ||||
| } | ||||
| @ -0,0 +1,23 @@ | ||||
| <?php | ||||
|  | ||||
| namespace Crater\Http\Controllers\V1\Settings; | ||||
|  | ||||
| use Crater\Models\CompanySetting; | ||||
| use Crater\Http\Controllers\Controller; | ||||
| use Crater\Http\Requests\GetSettingsRequest; | ||||
|  | ||||
| class GetCompanySettingsController extends Controller | ||||
| { | ||||
|     /** | ||||
|      * Handle the incoming request. | ||||
|      * | ||||
|      * @param  \Illuminate\Http\Request  $request | ||||
|      * @return \Illuminate\Http\JsonResponse | ||||
|      */ | ||||
|     public function __invoke(GetSettingsRequest $request) | ||||
|     { | ||||
|         $settings = CompanySetting::getSettings($request->settings, $request->header('company')); | ||||
|  | ||||
|         return response()->json($settings); | ||||
|     } | ||||
| } | ||||
| @ -0,0 +1,23 @@ | ||||
| <?php | ||||
|  | ||||
| namespace Crater\Http\Controllers\V1\Settings; | ||||
|  | ||||
| use Auth; | ||||
| use Crater\Http\Controllers\Controller; | ||||
| use Crater\Http\Requests\GetSettingsRequest; | ||||
|  | ||||
| class GetUserSettingsController extends Controller | ||||
| { | ||||
|     /** | ||||
|      * Handle the incoming request. | ||||
|      * | ||||
|      * @param  \Illuminate\Http\GetSettingsRequest  $request | ||||
|      * @return \Illuminate\Http\JsonResponse | ||||
|      */ | ||||
|     public function __invoke(GetSettingsRequest $request) | ||||
|     { | ||||
|         $user = Auth::user(); | ||||
|  | ||||
|         return response()->json($user->getSettings($request->settings)); | ||||
|     } | ||||
| } | ||||
							
								
								
									
										100
									
								
								app/Http/Controllers/V1/Settings/MailConfigurationController.php
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										100
									
								
								app/Http/Controllers/V1/Settings/MailConfigurationController.php
									
									
									
									
									
										Executable file
									
								
							| @ -0,0 +1,100 @@ | ||||
| <?php | ||||
|  | ||||
| namespace Crater\Http\Controllers\V1\Settings; | ||||
|  | ||||
| use Crater\Models\Setting; | ||||
| use Illuminate\Http\Request; | ||||
| use Crater\Space\EnvironmentManager; | ||||
| use Crater\Http\Requests\MailEnvironmentRequest; | ||||
| use Illuminate\Http\JsonResponse; | ||||
| use Crater\Http\Controllers\Controller; | ||||
| use Crater\Mail\TestMail; | ||||
| use Mail; | ||||
|  | ||||
| class MailConfigurationController extends Controller | ||||
| { | ||||
|     /** | ||||
|      * @var EnvironmentManager | ||||
|      */ | ||||
|     protected $environmentManager; | ||||
|  | ||||
|     /** | ||||
|      * @param EnvironmentManager $environmentManager | ||||
|      */ | ||||
|     public function __construct(EnvironmentManager $environmentManager) | ||||
|     { | ||||
|         $this->environmentManager = $environmentManager; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * | ||||
|      * @param MailEnvironmentRequest $request | ||||
|      * @return JsonResponse | ||||
|      */ | ||||
|     public function saveMailEnvironment(MailEnvironmentRequest $request) | ||||
|     { | ||||
|         $setting = Setting::getSetting('profile_complete'); | ||||
|         $results = $this->environmentManager->saveMailVariables($request); | ||||
|  | ||||
|         if ($setting !== 'COMPLETED') | ||||
|         { | ||||
|             Setting::setSetting('profile_complete', 4); | ||||
|         } | ||||
|  | ||||
|         return response()->json($results); | ||||
|     } | ||||
|  | ||||
|     public function getMailEnvironment() | ||||
|     { | ||||
|         $MailData = [ | ||||
|             'mail_driver' => config('mail.driver'), | ||||
|             'mail_host' => config('mail.host'), | ||||
|             'mail_port' => config('mail.port'), | ||||
|             'mail_username' => config('mail.username'), | ||||
|             'mail_password' => config('mail.password'), | ||||
|             'mail_encryption' => config('mail.encryption'), | ||||
|             'from_name' => config('mail.from.name'), | ||||
|             'from_mail' => config('mail.from.address'), | ||||
|             'mail_mailgun_endpoint' => config('services.mailgun.endpoint'), | ||||
|             'mail_mailgun_domain' => config('services.mailgun.domain'), | ||||
|             'mail_mailgun_secret' => config('services.mailgun.secret'), | ||||
|             'mail_ses_key' => config('services.ses.key'), | ||||
|             'mail_ses_secret' => config('services.ses.secret'), | ||||
|         ]; | ||||
|  | ||||
|  | ||||
|         return response()->json($MailData); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * | ||||
|      * @return JsonResponse | ||||
|      */ | ||||
|     public function getMailDrivers() | ||||
|     { | ||||
|         $drivers = [ | ||||
|             'smtp', | ||||
|             'mail', | ||||
|             'sendmail', | ||||
|             'mailgun', | ||||
|             'ses' | ||||
|         ]; | ||||
|  | ||||
|         return response()->json($drivers); | ||||
|     } | ||||
|  | ||||
|     public function testEmailConfig(Request $request) | ||||
|     { | ||||
|         $this->validate($request, [ | ||||
|             'to' => 'required|email', | ||||
|             'subject' => 'required', | ||||
|             'message' => 'required' | ||||
|         ]); | ||||
|  | ||||
|         Mail::to($request->to)->send(new TestMail($request->subject, $request->message)); | ||||
|  | ||||
|         return response()->json([ | ||||
|             'success' => true | ||||
|         ]); | ||||
|     } | ||||
| } | ||||
							
								
								
									
										103
									
								
								app/Http/Controllers/V1/Settings/TaxTypesController.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										103
									
								
								app/Http/Controllers/V1/Settings/TaxTypesController.php
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,103 @@ | ||||
| <?php | ||||
|  | ||||
| namespace Crater\Http\Controllers\V1\Settings; | ||||
|  | ||||
| use Crater\Models\TaxType; | ||||
| use Crater\Http\Requests\TaxTypeRequest; | ||||
| use Illuminate\Http\Request; | ||||
| use Crater\Http\Controllers\Controller; | ||||
|  | ||||
| class TaxTypesController extends Controller | ||||
| { | ||||
|     /** | ||||
|      * Display a listing of the resource. | ||||
|      * | ||||
|      * @return \Illuminate\Http\Response | ||||
|      */ | ||||
|     public function index(Request $request) | ||||
|     { | ||||
|         $limit = $request->has('limit') ? $request->limit : 5; | ||||
|  | ||||
|         $taxTypes = TaxType::whereCompany($request->header('company')) | ||||
|             ->applyFilters($request->only([ | ||||
|                 'tax_type_id', | ||||
|                 'search', | ||||
|                 'orderByField', | ||||
|                 'orderBy' | ||||
|             ])) | ||||
|             ->latest() | ||||
|             ->paginateData($limit); | ||||
|  | ||||
|         return response()->json([ | ||||
|             'taxTypes' => $taxTypes | ||||
|         ]); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Store a newly created resource in storage. | ||||
|      * | ||||
|      * @param  \Illuminate\Http\Request  $request | ||||
|      * @return \Illuminate\Http\Response | ||||
|      */ | ||||
|     public function store(TaxTypeRequest $request) | ||||
|     { | ||||
|         $data = $request->validated(); | ||||
|  | ||||
|         $data['company_id'] = $request->header('company'); | ||||
|  | ||||
|         $taxType = TaxType::create($data); | ||||
|  | ||||
|         return response()->json([ | ||||
|             'taxType' => $taxType, | ||||
|         ]); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Display the specified resource. | ||||
|      * | ||||
|      * @param  \Crater\Models\TaxType  $taxType | ||||
|      * @return \Illuminate\Http\Response | ||||
|      */ | ||||
|     public function show(TaxType $taxType) | ||||
|     { | ||||
|         return response()->json([ | ||||
|             'taxType' => $taxType | ||||
|         ]); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Update the specified resource in storage. | ||||
|      * | ||||
|      * @param  \Illuminate\Http\Request  $request | ||||
|      * @param  \Crater\Models\TaxType  $taxType | ||||
|      * @return \Illuminate\Http\Response | ||||
|      */ | ||||
|     public function update(TaxTypeRequest $request, TaxType $taxType) | ||||
|     { | ||||
|         $taxType->update($request->validated()); | ||||
|  | ||||
|         return response()->json([ | ||||
|             'taxType' => $taxType, | ||||
|         ]); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Remove the specified resource from storage. | ||||
|      * | ||||
|      * @param  \Crater\Models\TaxType  $taxType | ||||
|      * @return \Illuminate\Http\Response | ||||
|      */ | ||||
|     public function destroy(TaxType $taxType) | ||||
|     { | ||||
|         if ($taxType->taxes() && $taxType->taxes()->count() > 0) { | ||||
|             return response()->json([ | ||||
|                 'success' => false | ||||
|             ]); | ||||
|         } | ||||
|         $taxType->delete(); | ||||
|  | ||||
|         return response()->json([ | ||||
|             'success' => true | ||||
|         ]); | ||||
|     } | ||||
| } | ||||
| @ -0,0 +1,25 @@ | ||||
| <?php | ||||
|  | ||||
| namespace Crater\Http\Controllers\V1\Settings; | ||||
|  | ||||
| use Crater\Models\CompanySetting; | ||||
| use Crater\Http\Controllers\Controller; | ||||
| use Crater\Http\Requests\UpdateSettingsRequest; | ||||
|  | ||||
| class UpdateCompanySettingsController extends Controller | ||||
| { | ||||
|     /** | ||||
|      * Handle the incoming request. | ||||
|      * | ||||
|      * @param  \Illuminate\Http\UpdateSettingsRequest  $request | ||||
|      * @return \Illuminate\Http\JsonResponse | ||||
|      */ | ||||
|     public function __invoke(UpdateSettingsRequest $request) | ||||
|     { | ||||
|         CompanySetting::setSettings($request->settings, $request->header('company')); | ||||
|  | ||||
|         return response()->json([ | ||||
|             'success' => true | ||||
|         ]); | ||||
|     } | ||||
| } | ||||
| @ -0,0 +1,27 @@ | ||||
| <?php | ||||
|  | ||||
| namespace Crater\Http\Controllers\V1\Settings; | ||||
|  | ||||
| use Auth; | ||||
| use Crater\Http\Controllers\Controller; | ||||
| use Crater\Http\Requests\UpdateSettingsRequest; | ||||
|  | ||||
| class UpdateUserSettingsController extends Controller | ||||
| { | ||||
|     /** | ||||
|      * Handle the incoming request. | ||||
|      * | ||||
|      * @param  \Illuminate\Http\UpdateSettingsRequest  $request | ||||
|      * @return \Illuminate\Http\Response | ||||
|      */ | ||||
|     public function __invoke(UpdateSettingsRequest $request) | ||||
|     { | ||||
|         $user = Auth::user(); | ||||
|  | ||||
|         $user->setSettings($request->settings); | ||||
|  | ||||
|         return response()->json([ | ||||
|             'success' => true | ||||
|         ]); | ||||
|     } | ||||
| } | ||||
		Reference in New Issue
	
	Block a user