CompanyController.php 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142
  1. <?php
  2. /**
  3. * Created by IntelliJ IDEA.
  4. * User: kelyliang
  5. * Date: 2024/3/20
  6. * Time: 下午 02:32
  7. */
  8. namespace App\Http\Controllers\API;
  9. use function App\Http\Controllers\badRequest;
  10. use App\Http\Controllers\Controller;
  11. use App\Http\Requests\API\Company\ActionRequest;
  12. use App\Http\Requests\API\Company\CreateOrUpdateRequest;
  13. use App\Http\Resources\API\CompanyResource;
  14. use App\Models\Company;
  15. use App\Models\User;
  16. use App\Services\File\FileAssociationService;
  17. use Carbon\Carbon;
  18. use Illuminate\Http\Request;
  19. use Illuminate\Support\Facades\Auth;
  20. use App\Models\Enums\CompanyReviewStatus;
  21. class CompanyController extends Controller
  22. {
  23. public function index(Request $request)
  24. {
  25. if(Auth::user()->super_admin){
  26. $company=Company::query()->filter($request->all())->get();
  27. return CompanyResource::collection($company);
  28. }else{
  29. $company=Auth::user()->company;
  30. return new CompanyResource($company);
  31. }
  32. }
  33. public function store(CreateOrUpdateRequest $request)
  34. {
  35. $company = new Company();
  36. $company->fill([
  37. ...$request->all(),
  38. ]);
  39. $company->save();
  40. return $this->created();
  41. }
  42. public function show(string $id)
  43. {
  44. $companyId=Auth::user()->company->id;
  45. if(empty(Auth::user()->super_admin)){
  46. if($companyId!=$id){
  47. return $this->forbidden("You are not a user under this company");
  48. }
  49. }
  50. $field = Company::query()->findOrFail($id);
  51. return new CompanyResource($field);
  52. }
  53. public function update(Request $request,string $id){
  54. $company = Company::findOrFail($id);
  55. $company->email =$request->email;
  56. $company->save();
  57. return $this->noContent();
  58. }
  59. public function destroy(string $id)
  60. {
  61. $company = Company::findOrFail($id);
  62. $company->delete();
  63. return $this->noContent();
  64. }
  65. //注册用户时注册公司
  66. public function registerStore(FileAssociationService $service,CreateOrUpdateRequest $request)
  67. {
  68. $company = new Company();
  69. $service->check(
  70. $request->get("file_ids",[]),
  71. FileObjectType::COMPANY,
  72. $request->get("file_uuid"),
  73. );
  74. $company->fill([
  75. ...$request->all(),
  76. ]);
  77. $company->save();
  78. $service->association($company->id);
  79. return $this->success([
  80. 'data' => [
  81. 'company_id' => $company->id,
  82. ]
  83. ]);
  84. }
  85. //公司审核
  86. public function action(ActionRequest $request){
  87. $companys = Company::query()->whereIn('id',$request->get('ids'))->get();
  88. foreach ($companys as $company){
  89. if($company->review_status===CompanyReviewStatus::APPROVED->value){
  90. badRequest(sprintf("Company ID: %s,has been approved", $company->id));
  91. }
  92. $status=$request->get('status');
  93. $expDate=$request->get('exp_data');
  94. match($status) {
  95. 1 =>$this->approved($company,$expDate),
  96. default => $company->review_status=CompanyReviewStatus::REJECTED,
  97. };
  98. $company->save();
  99. }
  100. return $this->noContent();
  101. }
  102. protected function approved(Company $company,$expDate = null): void
  103. {
  104. $company->review_status=CompanyReviewStatus::APPROVED;
  105. $expDate=$expDate===null?Carbon::now()->addYear()->toDateString():$expDate;
  106. $company->exp_date=$expDate;
  107. }
  108. }