few updates
parent
b502781f9b
commit
b929412fcd
|
|
@ -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) {
|
||||
|
|
|
|||
|
|
@ -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() {
|
||||
|
|
|
|||
|
|
@ -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) {
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue