Advertisement
Guest User

Untitled

a guest
Feb 28th, 2020
86
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.29 KB | None | 0 0
  1. <?php
  2.  
  3. use Illuminate\Support\Facades\Schema;
  4. use Illuminate\Database\Schema\Blueprint;
  5. use Illuminate\Database\Migrations\Migration;
  6. use App\Maistre\Helpers\Log;
  7. use Broadway\ReadModel\RepositoryFactory;
  8. use App\Maistre\Helpers\ElasticSearchFluentSearchHelper;
  9. use App\Maistre\Helpers\ElasticSearchHelper;
  10. use App\ReadModels\CemiterioSubdomain\CemiterioBoundedContext\CobrancaCemiterioReadModel;
  11. use App\ReadModels\CemiterioSubdomain\CemiterioBoundedContext\SepulturaReadModel;
  12.  
  13. class UpdatePagamentoSepulturaTable extends Migration
  14. {
  15. /**
  16. * Run the migrations.
  17. *
  18. * @return void
  19. */
  20. public function up()
  21. {
  22. try {
  23. $this->ajustaUltimoPagamentoSepultura();
  24. } catch (\Throwable $e) {
  25. Log::logException($e);
  26. throw $e;
  27. }
  28. }
  29.  
  30. public function ajustaUltimoPagamentoSepultura($proximoUuid = "")
  31. {
  32. $fluentSearch2 = new ElasticSearchFluentSearchHelper(
  33. SepulturaReadModel::class
  34. );
  35.  
  36. $fluentSearch2->query()
  37. ->bool()
  38. ->mustNot()
  39. ->exists('ultimaCobranca')
  40. ->match("contratoCemiterioId", "");
  41.  
  42. if (empty($proximoUuid) === false) {
  43. $fluentSearch2->range("sepulturaId")
  44. ->maiorQue($proximoUuid);
  45. }
  46.  
  47. $result = $fluentSearch2->sort(["_uid"])
  48. ->size(1000)
  49. ->search();
  50.  
  51. $ultimaCobranca = [];
  52.  
  53. if ($result['total'] > 0) {
  54. /** @var RepositoryFactory $readModelRepository */
  55. $readModelRepository = app(RepositoryFactory::class);
  56. $esRepo = $readModelRepository->create(app('subdomain'), SepulturaReadModel::class);
  57. foreach ($result['data'] as $value) {
  58. $search = new ElasticSearchFluentSearchHelper(CobrancaCemiterioReadModel::class);
  59. $cobrancaCemiterio = $search->query()
  60. ->bool()
  61. ->must()
  62. ->match("contratoCemiterioId", (string)$value->contratoCemiterioId)
  63. ->size(1)
  64. ->sort(['data'=>'desc'])
  65. ->search();
  66.  
  67. $ultimaCobranca[] = [
  68. 'mesCompetencia' => $cobrancaCemiterio['data'][0]->mesDataCompetencia,
  69. 'anoCompetencia' => $cobrancaCemiterio['data'][0]->anoDataCompetencia,
  70. 'valor' => $cobrancaCemiterio['data'][0]->valor
  71. ];
  72.  
  73. $sepulturaRM = ElasticSearchHelper::getElasticSearchByAttribute(
  74. SepulturaReadModel::class,
  75. 'contratoCemiterioId',
  76. $value->contratoCemiterioId
  77. );
  78.  
  79. if (!empty($cobrancaCemiterio)) {
  80. $sepulturaRM[0]->ultimaCobranca = $ultimaCobranca;
  81. $esRepo->save($sepulturaRM[0]);
  82. }
  83. $ultimaSepulturaId = (string) $value->contratoCemiterioId;
  84. }
  85. if ($result['total'] > 1000) {
  86. $this->ajustaUltimoPagamentoSepultura($ultimaSepulturaId);
  87. }
  88. }
  89. }
  90.  
  91.  
  92. /**
  93. * Reverse the migrations.
  94. *
  95. * @return void
  96. */
  97. public function down()
  98. {
  99. //
  100. }
  101. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement