Skip to content

Releases: akbarali1/view-model

2.1

27 Dec 13:58
Compare
Choose a tag to compare

Full Changelog: 2.0...2.1

2.0

12 Sep 08:09
Compare
Choose a tag to compare
2.0

CollectionViewModel and PaginationViewModel add function setSnakeCase

1.9

01 Apr 16:13
Compare
Choose a tag to compare
1.9

1.9 version add toCsv method

class PartnerData extends \Akbarali\DataObject\DataObjectBase
{
    public readonly int $id;
    public readonly int $agentId;
    public string       $fullName;
    public string       $phone;
    public ?string      $address;
    public ?string      $description;
    public Carbon       $createdAt;
}

class PartnerViewModel extends \Akbarali\ViewModel\BaseViewModel
{
    public ?int    $id;
    public ?string $fullName;
    public ?string $phone;
    public ?string $hPhone;
    public ?string $address;
    public ?string $description;
    public ?string $hDate;
    public ?string $agentName;

    protected DataObjectBase|PartnerData $_data;

    protected function populate(): void
    {
        $this->hDate     = $this->_data->createdAt->format('d.m.Y H:i');
        $this->agentName = $this->_data->agent->full_name ?? '';
        $phone           = (new Phone($this->_data->phone));
        $this->hPhone    = $phone->getFormatted();
    }

    protected static function csvData(): array
    {
        return [
            'dataObject' => PartnerData::class,
            'columns'    => [
                "ID",
                trans('all.full_name'),
                trans('all.phone'),
                trans('all.agent'),
                trans('all.address'),
                trans('all.description'),
                trans('all.created_at'),
                'Time UTC',
            ],
            'fields'     => [
                'id',
                'fullName',
                'hPhone',
                'agentName',
                'address',
                'description',
                'hDate',
                fn($item) => $this->_data->createdAt->format('Y-m-d H:i:s'),
            ],
        ];
    }
}

final class PotentialPartnerController extends Controller
{
    public function index(Request $request)
    {
        $filters = collect();
        $filters->push(DateFilter::getDateRangeFilter());
        $filters->push(AgentFilter::getFilterAgentId($request->user()));
        if ($request->get('filter') === 'export') {
          return PartnerViewModel::toCsv($this->getExportQueryPartner($filters), 'csvData');
        }
    }
    
    public function getExportQueryPartner($filters): Builder
    {
        $model = PartnerModel::applyEloquentFilters($filters)->latest();
        $model->select('partners.*');
        return $model;
    }
}

1.7

29 Mar 10:05
Compare
Choose a tag to compare
1.7

Full Changelog: 1.6...1.7

1.8

30 Mar 07:14
Compare
Choose a tag to compare
1.8

Full Changelog: 1.7...1.8

1.6

24 Mar 07:41
Compare
Choose a tag to compare
1.6

Full Changelog: 1.5...1.6

1.5

24 Mar 07:10
Compare
Choose a tag to compare
1.5

Full Changelog: 1.4...1.5

1.4

11 Mar 08:45
Compare
Choose a tag to compare
1.4

Full Changelog: 1.3...1.4

1.3

10 Mar 10:27
Compare
Choose a tag to compare
1.3

Full Changelog: 1.2...1.3

1.2

22 Feb 13:30
Compare
Choose a tag to compare
1.2

Full Changelog: 1.1...1.2