Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- use Illuminate\Support\Facades\Schema;
- use Illuminate\Database\Schema\Blueprint;
- use Illuminate\Database\Migrations\Migration;
- use App\Maistre\Helpers\Log;
- use Broadway\ReadModel\RepositoryFactory;
- use App\Maistre\Helpers\ElasticSearchFluentSearchHelper;
- use App\Maistre\Helpers\ElasticSearchHelper;
- use App\ReadModels\CemiterioSubdomain\CemiterioBoundedContext\CobrancaCemiterioReadModel;
- use App\ReadModels\CemiterioSubdomain\CemiterioBoundedContext\SepulturaReadModel;
- class UpdatePagamentoSepulturaTable extends Migration
- {
- /**
- * Run the migrations.
- *
- * @return void
- */
- public function up()
- {
- try {
- $this->ajustaUltimoPagamentoSepultura();
- } catch (\Throwable $e) {
- Log::logException($e);
- throw $e;
- }
- }
- public function ajustaUltimoPagamentoSepultura($proximoUuid = "")
- {
- $fluentSearch2 = new ElasticSearchFluentSearchHelper(
- SepulturaReadModel::class
- );
- $fluentSearch2->query()
- ->bool()
- ->mustNot()
- ->exists('ultimaCobranca')
- ->match("contratoCemiterioId", "");
- if (empty($proximoUuid) === false) {
- $fluentSearch2->range("sepulturaId")
- ->maiorQue($proximoUuid);
- }
- $result = $fluentSearch2->sort(["_uid"])
- ->size(1000)
- ->search();
- $ultimaCobranca = [];
- if ($result['total'] > 0) {
- /** @var RepositoryFactory $readModelRepository */
- $readModelRepository = app(RepositoryFactory::class);
- $esRepo = $readModelRepository->create(app('subdomain'), SepulturaReadModel::class);
- foreach ($result['data'] as $value) {
- $search = new ElasticSearchFluentSearchHelper(CobrancaCemiterioReadModel::class);
- $cobrancaCemiterio = $search->query()
- ->bool()
- ->must()
- ->match("contratoCemiterioId", (string)$value->contratoCemiterioId)
- ->size(1)
- ->sort(['data'=>'desc'])
- ->search();
- $ultimaCobranca[] = [
- 'mesCompetencia' => $cobrancaCemiterio['data'][0]->mesDataCompetencia,
- 'anoCompetencia' => $cobrancaCemiterio['data'][0]->anoDataCompetencia,
- 'valor' => $cobrancaCemiterio['data'][0]->valor
- ];
- $sepulturaRM = ElasticSearchHelper::getElasticSearchByAttribute(
- SepulturaReadModel::class,
- 'contratoCemiterioId',
- $value->contratoCemiterioId
- );
- if (!empty($cobrancaCemiterio)) {
- $sepulturaRM[0]->ultimaCobranca = $ultimaCobranca;
- $esRepo->save($sepulturaRM[0]);
- }
- $ultimaSepulturaId = (string) $value->contratoCemiterioId;
- }
- if ($result['total'] > 1000) {
- $this->ajustaUltimoPagamentoSepultura($ultimaSepulturaId);
- }
- }
- }
- /**
- * Reverse the migrations.
- *
- * @return void
- */
- public function down()
- {
- //
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement