* * This source file is subject to the MIT license that is bundled * with this source code in the file LICENSE. */ namespace App\Repositories\Transformers; use App\Models\Device; use App\Models\Order; use App\Repositories\Enums\DeviceLineEnum; use App\Repositories\Enums\DeviceLuTypeEnum; use App\Repositories\Enums\DeviceStatusEnum; use App\Repositories\Enums\DeviceUseStatusEnum; use App\Repositories\Enums\DeviceWaterLevelEnum; use App\Repositories\Enums\OrderStatusEnum; use League\Fractal\TransformerAbstract; class DeviceTransformer extends TransformerAbstract { public function transform(Device $device) { $data = [ 'id' => $device->id, 'no' => $device->no, 'type' => $device->type, 'temperature' => $device->temperature ?? '未知', 'water_level_warning' => $device->water_level_warning, 'water_level_warning_text' => DeviceWaterLevelEnum::getDescription($device->water_level_warning), 'water_quality' => $device->water_quality ?? '未知', 'last_update_time' => $device->last_update_time, 'a' => $device->a, 'a_test' => DeviceLuTypeEnum::getDescription($device->a), 'b' => $device->b, 'b_test' => DeviceLuTypeEnum::getDescription($device->b), 'is_use' => $device->is_use, 'is_use_text' => DeviceUseStatusEnum::getDescription($device->is_use), 'is_line' => $device->is_line, 'is_line_text' => DeviceLineEnum::getDescription($device->is_line), 'shop_id' => $device->shop_id, 'status' => $device->status, 'status_text' => DeviceStatusEnum::getDescription($device->status), 'day_money' => Order::query()->whereDate('pay_time', date("Y-m-d"))->where('device_id', $device->id)->where('status', OrderStatusEnum::ORDER_OVER)->sum('pay_money'), 'work_time' => Order::query()->whereDate('pay_time', date("Y-m-d"))->where('device_id', $device->id)->where('status', OrderStatusEnum::ORDER_OVER)->sum('work_time'), 'shop' => $this->shop($device) ]; return $data; } public function shop($device) { if (!$device->shop) return []; return $device->shop->only(['a_minute_money', 'b_minute_money', 'ab_minute_money', 'times', 'name']); } }