create report files
This commit is contained in:
@@ -0,0 +1,108 @@
|
||||
<?php
|
||||
|
||||
namespace App\Exports\V3\RoadItemsProjects;
|
||||
|
||||
use App\Models\Province;
|
||||
use App\Models\RoadItemsProject;
|
||||
use Carbon\Carbon;
|
||||
use Illuminate\Contracts\View\View;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
use Maatwebsite\Excel\Concerns\FromView;
|
||||
use Maatwebsite\Excel\Concerns\ShouldAutoSize;
|
||||
use Maatwebsite\Excel\Concerns\WithDrawings;
|
||||
use Maatwebsite\Excel\Concerns\WithEvents;
|
||||
use Maatwebsite\Excel\Events\AfterSheet;
|
||||
use PhpOffice\PhpSpreadsheet\Style\Alignment;
|
||||
use PhpOffice\PhpSpreadsheet\Worksheet\Drawing;
|
||||
|
||||
class CountryActivityPerItemReport implements FromView, WithEvents, ShouldAutoSize, WithDrawings
|
||||
{
|
||||
public function __construct(private ?string $fromDate, private ?string $toDate){}
|
||||
|
||||
public function view(): View
|
||||
{
|
||||
$fromDate = $this->fromDate ?? '2021-03-21';
|
||||
$toDate = $this->toDate ?? \Carbon\Carbon::now();
|
||||
|
||||
$query = "SELECT
|
||||
COUNT(CASE WHEN item = 1 THEN 1 END) AS MarematRooyeCount,
|
||||
COUNT(CASE WHEN item = 2 THEN 1 END) AS PaksaziCount,
|
||||
COUNT(CASE WHEN item = 3 THEN 1 END) AS AlaemCount,
|
||||
COUNT(CASE WHEN item = 4 THEN 1 END) AS HefazCount,
|
||||
COUNT(CASE WHEN item = 5 THEN 1 END) AS RoshanayiCount,
|
||||
COUNT(CASE WHEN item = 6 THEN 1 END) AS KhatkeshiCount,
|
||||
COUNT(CASE WHEN item = 7 THEN 1 END) AS RangamiziCount,
|
||||
COUNT(CASE WHEN item = 8 THEN 1 END) AS WashingCount,
|
||||
COUNT(CASE WHEN item = 9 THEN 1 END) AS ImenSaziCount,
|
||||
COUNT(CASE WHEN item = 10 THEN 1 END) AS HarimCount,
|
||||
COUNT(CASE WHEN item = 11 THEN 1 END) AS PolCount,
|
||||
COUNT(CASE WHEN item = 12 THEN 1 END) AS ToonelCount,
|
||||
COUNT(CASE WHEN item = 13 THEN 1 END) AS AmaliatZemestaniCount,
|
||||
COUNT(CASE WHEN item = 14 THEN 1 END) AS MashinAlatCount,
|
||||
COUNT(CASE WHEN item = 15 THEN 1 END) AS TollhouseCount,
|
||||
COUNT(CASE WHEN item = 16 THEN 1 END) AS EmergencyCount,
|
||||
province_fa,
|
||||
province_id,
|
||||
COUNT(CASE WHEN item != -1 THEN 1 END) AS TotalCount
|
||||
FROM (
|
||||
SELECT
|
||||
province_fa,
|
||||
province_id,
|
||||
item,
|
||||
status
|
||||
FROM road_items_projects
|
||||
WHERE activity_date_time BETWEEN '{$fromDate} 00:00:00' and '{$toDate} 23:59:59'
|
||||
) AS merged_table
|
||||
WHERE status = 1
|
||||
GROUP BY province_id, province_fa;";
|
||||
|
||||
$countryActivities = DB::select($query);
|
||||
|
||||
return view('', [
|
||||
'activities' => $countryActivities,
|
||||
'fromDate' => $fromDate,
|
||||
'toDate' => $toDate
|
||||
]);
|
||||
}
|
||||
|
||||
public function registerEvents(): array
|
||||
{
|
||||
return [
|
||||
AfterSheet::class => function (AfterSheet $event) {
|
||||
$event->sheet->getDelegate()->setRightToLeft(true);
|
||||
$event->sheet->getDelegate()->getStyle('A:U')->getFont()->setName('Arial');
|
||||
$event->sheet->getDelegate()->getStyle('A:U')
|
||||
->getAlignment()
|
||||
->setHorizontal(Alignment::HORIZONTAL_CENTER);
|
||||
|
||||
$event->sheet->getDelegate()->getStyle('A:U')
|
||||
->getAlignment()
|
||||
->setVertical(Alignment::VERTICAL_CENTER);
|
||||
}
|
||||
];
|
||||
}
|
||||
|
||||
public function drawings(): array
|
||||
{
|
||||
$drawing = new Drawing();
|
||||
$drawing->setName('Logo');
|
||||
$drawing->setDescription('This is my logo');
|
||||
$drawing->setPath(public_path('/dist/logo.png'));
|
||||
$drawing->setWidth(50);
|
||||
$drawing->setHeight(50);
|
||||
$drawing->setOffsetX(5);
|
||||
$drawing->setOffsetY(5);
|
||||
$drawing->setCoordinates('A1');
|
||||
|
||||
$drawing2 = new Drawing();
|
||||
$drawing2->setName('Logo');
|
||||
$drawing2->setDescription('This is my logo');
|
||||
$drawing2->setPath(public_path('/dist/141icon.png'));
|
||||
$drawing2->setWidth(50);
|
||||
$drawing2->setHeight(50);
|
||||
$drawing2->setOffsetX(5);
|
||||
$drawing2->setOffsetY(5);
|
||||
$drawing2->setCoordinates('q1');
|
||||
return [$drawing, $drawing2];
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,122 @@
|
||||
<?php
|
||||
|
||||
namespace App\Exports\V3\RoadItemsProjects;
|
||||
|
||||
use App\Models\Province;
|
||||
use App\Models\RoadItemsProject;
|
||||
use Carbon\Carbon;
|
||||
use Illuminate\Contracts\View\View;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
use Maatwebsite\Excel\Concerns\FromView;
|
||||
use Maatwebsite\Excel\Concerns\ShouldAutoSize;
|
||||
use Maatwebsite\Excel\Concerns\WithDrawings;
|
||||
use Maatwebsite\Excel\Concerns\WithEvents;
|
||||
use Maatwebsite\Excel\Events\AfterSheet;
|
||||
use PhpOffice\PhpSpreadsheet\Style\Alignment;
|
||||
use PhpOffice\PhpSpreadsheet\Worksheet\Drawing;
|
||||
|
||||
class CountryActivityPerSubItemReport implements FromView, WithEvents, ShouldAutoSize, WithDrawings
|
||||
{
|
||||
public function __construct(private ?string $fromDate, private ?string $toDate){}
|
||||
|
||||
public function view(): View
|
||||
{
|
||||
$fromDate = $this->fromDate ?? '2021-03-21';
|
||||
$toDate = $this->toDate ?? Carbon::now();
|
||||
|
||||
$query = "SELECT
|
||||
COUNT(CASE WHEN sub_item = 1 THEN 1 END) as LabeAsphaltCount,
|
||||
SUM(CASE WHEN sub_item = 1 THEN sub_item_data END) as LabeAsphaltSum,
|
||||
|
||||
COUNT(CASE WHEN sub_item = 2 THEN 1 END) as ShaneSaziCount,
|
||||
SUM(CASE WHEN sub_item = 2 THEN sub_item_data END) as ShaneSaziSum,
|
||||
|
||||
COUNT(CASE WHEN sub_item = 3 THEN 1 END) as GodOftadegiCount,
|
||||
SUM(CASE WHEN sub_item = 3 THEN sub_item_data END) as GodOftadegiSum,
|
||||
|
||||
COUNT(CASE WHEN sub_item = 4 THEN 1 END) as LakegiriCount,
|
||||
SUM(CASE WHEN sub_item = 4 THEN sub_item_data END) as LakegiriSum,
|
||||
|
||||
COUNT(CASE WHEN sub_item = 5 THEN 1 END) as MarematCount,
|
||||
SUM(CASE WHEN sub_item = 5 THEN sub_item_data END) as MarematSum,
|
||||
|
||||
COUNT(CASE WHEN sub_item = 6 THEN 1 END) as BastarHarimCount,
|
||||
SUM(CASE WHEN sub_item = 6 THEN sub_item_data END) as BastarHarimSum,
|
||||
|
||||
COUNT(CASE WHEN sub_item = 8 THEN 1 END) as DarzgiriCount,
|
||||
SUM(CASE WHEN sub_item = 8 THEN sub_item_data END) as DarzgiriSum,
|
||||
|
||||
COUNT(CASE WHEN sub_item = 9 THEN 1 END) as MozresCount,
|
||||
SUM(CASE WHEN sub_item = 9 THEN sub_item_data END) as MozresSum,
|
||||
|
||||
COUNT(CASE WHEN sub_item = 10 THEN 1 END) as TarashRooyeCount,
|
||||
SUM(CASE WHEN sub_item = 10 THEN sub_item_data END) as TarashRooyeSum,
|
||||
|
||||
COUNT(CASE WHEN sub_item = 11 THEN 1 END) as TighzaniCount,
|
||||
SUM(CASE WHEN sub_item = 11 THEN sub_item_data END) as TighzaniSum,
|
||||
|
||||
COUNT(CASE WHEN sub_item = 12 THEN 1 END) as ShenriziCount,
|
||||
SUM(CASE WHEN sub_item = 12 THEN sub_item_data END) as ShenriziSum,
|
||||
|
||||
COUNT(CASE WHEN sub_item = 13 THEN 1 END) as KhakbardariCount,
|
||||
SUM(CASE WHEN sub_item = 13 THEN sub_item_data END) as KhakbardariSum,
|
||||
|
||||
province_id,
|
||||
province_fa
|
||||
|
||||
FROM road_items_projects
|
||||
WHERE item = 1 and status = 1
|
||||
AND activity_date_time BETWEEN '{$fromDate} 00:00:00' and '{$toDate} 23:59:59'
|
||||
GROUP BY province_id, province_fa
|
||||
ORDER BY province_id ASC;";
|
||||
|
||||
$countryActivities = DB::select($query);
|
||||
|
||||
return view('', [
|
||||
'activities' => $countryActivities,
|
||||
'fromDate' => $fromDate,
|
||||
'toDate' => $toDate
|
||||
]);
|
||||
}
|
||||
|
||||
public function registerEvents(): array
|
||||
{
|
||||
return [
|
||||
AfterSheet::class => function (AfterSheet $event) {
|
||||
$event->sheet->getDelegate()->setRightToLeft(true);
|
||||
$event->sheet->getDelegate()->getStyle('A:U')->getFont()->setName('Arial');
|
||||
$event->sheet->getDelegate()->getStyle('A:U')
|
||||
->getAlignment()
|
||||
->setHorizontal(Alignment::HORIZONTAL_CENTER);
|
||||
|
||||
$event->sheet->getDelegate()->getStyle('A:U')
|
||||
->getAlignment()
|
||||
->setVertical(Alignment::VERTICAL_CENTER);
|
||||
}
|
||||
];
|
||||
}
|
||||
|
||||
public function drawings(): array
|
||||
{
|
||||
$drawing = new Drawing();
|
||||
$drawing->setName('Logo');
|
||||
$drawing->setDescription('This is my logo');
|
||||
$drawing->setPath(public_path('/dist/logo.png'));
|
||||
$drawing->setWidth(50);
|
||||
$drawing->setHeight(50);
|
||||
$drawing->setOffsetX(5);
|
||||
$drawing->setOffsetY(5);
|
||||
$drawing->setCoordinates('A1');
|
||||
|
||||
$drawing2 = new Drawing();
|
||||
$drawing2->setName('Logo');
|
||||
$drawing2->setDescription('This is my logo');
|
||||
$drawing2->setPath(public_path('/dist/141icon.png'));
|
||||
$drawing2->setWidth(50);
|
||||
$drawing2->setHeight(50);
|
||||
$drawing2->setOffsetX(5);
|
||||
$drawing2->setOffsetY(5);
|
||||
$drawing2->setCoordinates('q1');
|
||||
return [$drawing, $drawing2];
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,116 @@
|
||||
<?php
|
||||
|
||||
namespace App\Exports\V3\RoadItemsProjects;
|
||||
|
||||
use App\Models\Province;
|
||||
use App\Models\RoadItemsProject;
|
||||
use Carbon\Carbon;
|
||||
use Illuminate\Contracts\View\View;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
use Maatwebsite\Excel\Concerns\FromView;
|
||||
use Maatwebsite\Excel\Concerns\ShouldAutoSize;
|
||||
use Maatwebsite\Excel\Concerns\WithDrawings;
|
||||
use Maatwebsite\Excel\Concerns\WithEvents;
|
||||
use Maatwebsite\Excel\Events\AfterSheet;
|
||||
use PhpOffice\PhpSpreadsheet\Style\Alignment;
|
||||
use PhpOffice\PhpSpreadsheet\Worksheet\Drawing;
|
||||
|
||||
class ProvinceActivityPerItemReport implements FromView, WithEvents, ShouldAutoSize, WithDrawings
|
||||
{
|
||||
public function __construct(private ?string $fromDate,
|
||||
private ?string $toDate,
|
||||
private string $provinceId,
|
||||
){}
|
||||
|
||||
public function view(): View
|
||||
{
|
||||
$fromDate = $this->fromDate ?? '2021-03-21';
|
||||
$toDate = $this->toDate ?? \Carbon\Carbon::now();
|
||||
|
||||
$query = "SELECT
|
||||
COUNT(CASE WHEN item = 1 THEN 1 END) AS MarematRooyeCount,
|
||||
COUNT(CASE WHEN item = 2 THEN 1 END) AS PaksaziCount,
|
||||
COUNT(CASE WHEN item = 3 THEN 1 END) AS AlaemCount,
|
||||
COUNT(CASE WHEN item = 4 THEN 1 END) AS HefazCount,
|
||||
COUNT(CASE WHEN item = 5 THEN 1 END) AS RoshanayiCount,
|
||||
COUNT(CASE WHEN item = 6 THEN 1 END) AS KhatkeshiCount,
|
||||
COUNT(CASE WHEN item = 7 THEN 1 END) AS RangamiziCount,
|
||||
COUNT(CASE WHEN item = 8 THEN 1 END) AS WashingCount,
|
||||
COUNT(CASE WHEN item = 9 THEN 1 END) AS ImenSaziCount,
|
||||
COUNT(CASE WHEN item = 10 THEN 1 END) AS HarimCount,
|
||||
COUNT(CASE WHEN item = 11 THEN 1 END) AS PolCount,
|
||||
COUNT(CASE WHEN item = 12 THEN 1 END) AS ToonelCount,
|
||||
COUNT(CASE WHEN item = 13 THEN 1 END) AS AmaliatZemestaniCount,
|
||||
COUNT(CASE WHEN item = 14 THEN 1 END) AS MashinAlatCount,
|
||||
COUNT(CASE WHEN item = 15 THEN 1 END) AS TollhouseCount,
|
||||
COUNT(CASE WHEN item = 16 THEN 1 END) AS EmergencyCount,
|
||||
province_fa,
|
||||
province_id,
|
||||
edarat_name,
|
||||
edarat_id,
|
||||
COUNT(CASE WHEN item != -1 THEN 1 END) AS TotalCount
|
||||
FROM (
|
||||
SELECT
|
||||
province_fa,
|
||||
province_id,
|
||||
edarat_name,
|
||||
edarat_id,
|
||||
item,
|
||||
status
|
||||
FROM road_items_projects
|
||||
WHERE activity_date_time BETWEEN '{$fromDate} 00:00:00' and '{$toDate} 23:59:59'
|
||||
) AS merged_table
|
||||
WHERE status = 1
|
||||
AND province_id = {$this->provinceId}
|
||||
GROUP BY edarat_id, edarat_name, order by province_id ASC;";
|
||||
|
||||
$provinceActivities = DB::select($query);
|
||||
|
||||
return view('', [
|
||||
'activities' => $provinceActivities,
|
||||
'fromDate' => $fromDate,
|
||||
'toDate' => $toDate
|
||||
]);
|
||||
}
|
||||
|
||||
public function registerEvents(): array
|
||||
{
|
||||
return [
|
||||
AfterSheet::class => function (AfterSheet $event) {
|
||||
$event->sheet->getDelegate()->setRightToLeft(true);
|
||||
$event->sheet->getDelegate()->getStyle('A:U')->getFont()->setName('Arial');
|
||||
$event->sheet->getDelegate()->getStyle('A:U')
|
||||
->getAlignment()
|
||||
->setHorizontal(Alignment::HORIZONTAL_CENTER);
|
||||
|
||||
$event->sheet->getDelegate()->getStyle('A:U')
|
||||
->getAlignment()
|
||||
->setVertical(Alignment::VERTICAL_CENTER);
|
||||
}
|
||||
];
|
||||
}
|
||||
|
||||
public function drawings(): array
|
||||
{
|
||||
$drawing = new Drawing();
|
||||
$drawing->setName('Logo');
|
||||
$drawing->setDescription('This is my logo');
|
||||
$drawing->setPath(public_path('/dist/logo.png'));
|
||||
$drawing->setWidth(50);
|
||||
$drawing->setHeight(50);
|
||||
$drawing->setOffsetX(5);
|
||||
$drawing->setOffsetY(5);
|
||||
$drawing->setCoordinates('A1');
|
||||
|
||||
$drawing2 = new Drawing();
|
||||
$drawing2->setName('Logo');
|
||||
$drawing2->setDescription('This is my logo');
|
||||
$drawing2->setPath(public_path('/dist/141icon.png'));
|
||||
$drawing2->setWidth(50);
|
||||
$drawing2->setHeight(50);
|
||||
$drawing2->setOffsetX(5);
|
||||
$drawing2->setOffsetY(5);
|
||||
$drawing2->setCoordinates('q1');
|
||||
return [$drawing, $drawing2];
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,120 @@
|
||||
<?php
|
||||
|
||||
namespace App\Exports\V3\RoadItemsProjects;
|
||||
|
||||
use App\Models\Province;
|
||||
use App\Models\RoadItemsProject;
|
||||
use Carbon\Carbon;
|
||||
use Illuminate\Contracts\View\View;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
use Maatwebsite\Excel\Concerns\FromView;
|
||||
use Maatwebsite\Excel\Concerns\ShouldAutoSize;
|
||||
use Maatwebsite\Excel\Concerns\WithDrawings;
|
||||
use Maatwebsite\Excel\Concerns\WithEvents;
|
||||
use Maatwebsite\Excel\Events\AfterSheet;
|
||||
use PhpOffice\PhpSpreadsheet\Style\Alignment;
|
||||
use PhpOffice\PhpSpreadsheet\Worksheet\Drawing;
|
||||
|
||||
class ProvinceActivityPerSubItemReport implements FromView, WithEvents, ShouldAutoSize, WithDrawings
|
||||
{
|
||||
public function __construct(private ?string $fromDate, private ?string $toDate, private string $provinceId,){}
|
||||
|
||||
public function view(): View
|
||||
{
|
||||
$fromDate = $this->fromDate ?? '2021-03-21';
|
||||
$toDate = $this->toDate ?? Carbon::now();
|
||||
|
||||
$query = "SELECT
|
||||
COUNT(CASE WHEN sub_item = 1 THEN 1 END) as LabeAsphaltCount,
|
||||
SUM(CASE WHEN sub_item = 1 THEN sub_item_data END) as LabeAsphaltSum,
|
||||
|
||||
COUNT(CASE WHEN sub_item = 2 THEN 1 END) as ShaneSaziCount,
|
||||
SUM(CASE WHEN sub_item = 2 THEN sub_item_data END) as ShaneSaziSum,
|
||||
|
||||
COUNT(CASE WHEN sub_item = 3 THEN 1 END) as GodOftadegiCount,
|
||||
SUM(CASE WHEN sub_item = 3 THEN sub_item_data END) as GodOftadegiSum,
|
||||
|
||||
COUNT(CASE WHEN sub_item = 4 THEN 1 END) as LakegiriCount,
|
||||
SUM(CASE WHEN sub_item = 4 THEN sub_item_data END) as LakegiriSum,
|
||||
|
||||
COUNT(CASE WHEN sub_item = 5 THEN 1 END) as MarematCount,
|
||||
SUM(CASE WHEN sub_item = 5 THEN sub_item_data END) as MarematSum,
|
||||
|
||||
COUNT(CASE WHEN sub_item = 6 THEN 1 END) as BastarHarimCount,
|
||||
SUM(CASE WHEN sub_item = 6 THEN sub_item_data END) as BastarHarimSum,
|
||||
|
||||
COUNT(CASE WHEN sub_item = 8 THEN 1 END) as DarzgiriCount,
|
||||
SUM(CASE WHEN sub_item = 8 THEN sub_item_data END) as DarzgiriSum,
|
||||
|
||||
COUNT(CASE WHEN sub_item = 9 THEN 1 END) as MozresCount,
|
||||
SUM(CASE WHEN sub_item = 9 THEN sub_item_data END) as MozresSum,
|
||||
|
||||
COUNT(CASE WHEN sub_item = 10 THEN 1 END) as TarashRooyeCount,
|
||||
SUM(CASE WHEN sub_item = 10 THEN sub_item_data END) as TarashRooyeSum,
|
||||
|
||||
COUNT(CASE WHEN sub_item = 11 THEN 1 END) as TighzaniCount,
|
||||
SUM(CASE WHEN sub_item = 11 THEN sub_item_data END) as TighzaniSum,
|
||||
|
||||
COUNT(CASE WHEN sub_item = 12 THEN 1 END) as ShenriziCount,
|
||||
SUM(CASE WHEN sub_item = 12 THEN sub_item_data END) as ShenriziSum,
|
||||
|
||||
COUNT(CASE WHEN sub_item = 13 THEN 1 END) as KhakbardariCount,
|
||||
SUM(CASE WHEN sub_item = 13 THEN sub_item_data END) as KhakbardariSum,
|
||||
|
||||
province_id, province_fa, city_id, user_name as city_fa
|
||||
|
||||
FROM road_items_projects
|
||||
WHERE item =1 AND status = 1
|
||||
AND province_id = {$this->provinceId}
|
||||
AND activity_date_time BETWEEN '{$fromDate}' AND '{$toDate}' GROUP BY city_id ORDER BY province_id ASC;";
|
||||
|
||||
$provinceActivities = DB::select($query);
|
||||
|
||||
return view('', [
|
||||
'activities' => $provinceActivities,
|
||||
'fromDate' => $fromDate,
|
||||
'toDate' => $toDate
|
||||
]);
|
||||
}
|
||||
|
||||
public function registerEvents(): array
|
||||
{
|
||||
return [
|
||||
AfterSheet::class => function (AfterSheet $event) {
|
||||
$event->sheet->getDelegate()->setRightToLeft(true);
|
||||
$event->sheet->getDelegate()->getStyle('A:U')->getFont()->setName('Arial');
|
||||
$event->sheet->getDelegate()->getStyle('A:U')
|
||||
->getAlignment()
|
||||
->setHorizontal(Alignment::HORIZONTAL_CENTER);
|
||||
|
||||
$event->sheet->getDelegate()->getStyle('A:U')
|
||||
->getAlignment()
|
||||
->setVertical(Alignment::VERTICAL_CENTER);
|
||||
}
|
||||
];
|
||||
}
|
||||
|
||||
public function drawings(): array
|
||||
{
|
||||
$drawing = new Drawing();
|
||||
$drawing->setName('Logo');
|
||||
$drawing->setDescription('This is my logo');
|
||||
$drawing->setPath(public_path('/dist/logo.png'));
|
||||
$drawing->setWidth(50);
|
||||
$drawing->setHeight(50);
|
||||
$drawing->setOffsetX(5);
|
||||
$drawing->setOffsetY(5);
|
||||
$drawing->setCoordinates('A1');
|
||||
|
||||
$drawing2 = new Drawing();
|
||||
$drawing2->setName('Logo');
|
||||
$drawing2->setDescription('This is my logo');
|
||||
$drawing2->setPath(public_path('/dist/141icon.png'));
|
||||
$drawing2->setWidth(50);
|
||||
$drawing2->setHeight(50);
|
||||
$drawing2->setOffsetX(5);
|
||||
$drawing2->setOffsetY(5);
|
||||
$drawing2->setCoordinates('q1');
|
||||
return [$drawing, $drawing2];
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user