$module->id, 'type' => $module->type, 'name' => $module->name, 'reference' => $module->reference, 'connections' => $module->connections, 'marking' => $this->getMarkings($module), 'warehouseCharges' => $this->calculateWarehouseCharges($module), ]; } /** * Load Default Address * @param CompanyModule $module * @return Item */ public function includeAddress(CompanyModule $module): \League\Fractal\Resource\Item { $defaultAddress = $module->addresses()->defaultAddress()->first(); $defaultAddress = $defaultAddress ? $defaultAddress : $this->addresses()->first(); return $this->item($defaultAddress, new AddressTransformer()); } /** * Load Billing Address * @param CompanyModule $module * @return Item */ public function includeBillingAddress(CompanyModule $module): Item { $billingAddress = $module->addresses()->where('type', AddressType::BILLING)->where('status', ApprovalStatus::APPROVED)->first(); return $this->item($billingAddress, new AddressTransformer()); } /** * include the company * @param CompanyModule $module * @return Item */ public function includeCompany(CompanyModule $module): Item { $company = $module->company()->first(); return $this->item($company, new CompanyTransformer()); } /** * Load Remarks * @param CompanyModule $module * @return Collection */ public function includeRemarks(CompanyModule $module): Collection { $remarks = $module->remarks(); return $this->collection($remarks, new RemarkTransformer); } /** * Get Markings * @param CompanyModule $module * @return string */ public function getMarkings(CompanyModule $module): string { $connection = $module->inviters()->withPivot('invitee_reference')->first(); return $connection ? $connection->pivot->invitee_reference : ''; } /** * calculate warehouse charges * @param CompanyModule $module * @return mixed|null */ public function calculateWarehouseCharges(CompanyModule $module) { $segmentConstantObject = SegmentConstant::where('reference', SegmentConstants::WAREHOUSE_RATE)->get(); $segmentConstant = $segmentConstantObject->isEmpty() ? [] : (array)$segmentConstantObject->first()->value; return array_key_exists($module->id, $segmentConstant) ? $segmentConstant[$module->id] : null; } /** * include the contact * @param CompanyModule $module * @return Item */ public function includeContact(CompanyModule $module): Item { $contact = $module->contacts()->first(); return $this->item($contact, new ContactTransformer()); } }