few updates

master
Константин 2023-09-11 10:40:09 +03:00
parent b502781f9b
commit b929412fcd
4 changed files with 20 additions and 7 deletions

View File

@ -5,6 +5,7 @@ namespace App\Listeners\Applications;
use App\Events\Applications\ApplicationExpertChanged;
use App\Mail\Applications\NotifyApplicationExpertChanged;
use App\Models\Applications\Application;
use App\Models\Companies\CompanyMember;
use App\Models\User;
use Illuminate\Support\Facades\Mail;
@ -17,6 +18,13 @@ class SendApplicationExpertChangedNotifications {
if ($v = $event->application->submitter) $this->notify($v, $event->application);
if ($v = $event->application->expert()->first()) $this->notify($v->user, $event->application);
if ($v = $event->previousExpert) $this->notify($v->user, $event->application);
$this->notifyApplicationManagers($event->application);
}
public function notifyApplicationManagers(Application $application) {
$application->addressees->each(function(CompanyMember $member) use($application) {
$this->notify($member->user, $application);
});
}
public function notify(User $recipient, Application $application) {

View File

@ -13,7 +13,7 @@ use Illuminate\Support\Facades\Mail;
class SendApplicationStatusChangedNotifications {
public array $notifiableStatuses = [
'applicant' => [ApplicationStatus::COMPLETED],
'addresses' => [ApplicationStatus::PROCESSING]
'addresses' => [ApplicationStatus::PROCESSING, ApplicationStatus::COMPLETED]
];
public function __construct() {

View File

@ -3,6 +3,7 @@
namespace App\Models\Companies;
use App\Models\Advisories\AdvisoryMember;
use App\Models\Applications\Application;
use App\Models\User;
use App\Support\HasObjectsTrait;
use App\Support\RelationValuesTrait;
@ -55,6 +56,10 @@ class CompanyMember extends Model {
return $this->hasMany(AdvisoryMember::class);
}
public function expertiseApplications(): HasMany {
return $this->hasMany(Application::class, 'expert_id');
}
public function scopeMainCompany($query) {
return $query->whereHas('company', function($query) {

View File

@ -4,10 +4,10 @@ namespace App\Services\Filters\Applications;
use App\Models\Applications\Application;
use App\Models\Applications\ApplicationStatus;
use App\Models\Companies\CompanyMember;
use App\Models\Objects\FieldType;
use App\Models\User;
use App\Services\Filters\FiltersService;
use App\Transformers\Users\UserTransformer;
use App\Transformers\Companies\CompanyMemberTransformer;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Support\Collection;
use Illuminate\Support\Facades\Auth;
@ -49,7 +49,7 @@ class ApplicationFilters extends FiltersService {
'title' => 'Эксперт',
'type' => FieldType::RELATION,
'represented' => $this->getExperts($filters),
'value' => ($val = $filters->get('expert')) ? fractal(User::byUuids($val)->get(), new UserTransformer()) : null
'value' => ($val = $filters->get('expert')) ? fractal(CompanyMember::byUuids($val)->get(), new CompanyMemberTransformer()) : null
]
];
}
@ -70,9 +70,9 @@ class ApplicationFilters extends FiltersService {
public function getExperts(Collection $filters): Fractal {
return fractal(User::query()->whereHas('applicationConclusions.application', function($query) use($filters) {
return fractal(CompanyMember::query()->whereHas('expertiseApplications', function($query) use($filters) {
$this->applyFilters($query, $filters->except('expert'));
})->orderBy('name')->get(), new UserTransformer());
})->get(), new CompanyMemberTransformer());
}
@ -92,7 +92,7 @@ class ApplicationFilters extends FiltersService {
if ($prop === 'search') $this->applySearchFilter($query, $value, ['number', 'applicant', ['submitter' => ['name']], ['product' => ['name', 'purpose', 'normative', 'producer']]]);
elseif ($prop === 'created_at') $this->applyDateFilter($query, 'created_at', $value);
elseif ($prop === 'status') $query->whereIn('status', is_array($value) ? $value : [$value]);
elseif ($prop === 'expert') $this->applyRelationFilter($query, 'conclusions.author', $value);
elseif ($prop === 'expert') $this->applyRelationFilter($query, 'expert', $value);
}
}