Beispiel #1
0
        protected override Task ExecuteAsync(CancellationToken stoppingToken)
        {
            stoppingToken.ThrowIfCancellationRequested();

            var consumer = new EventingBasicConsumer(_channel);

            consumer.Received += (ch, ea) =>
            {
                var content            = Encoding.UTF8.GetString(ea.Body.ToArray());
                var newAgreementEntity = JsonConvert.DeserializeObject <Agreement>(content);

                using var scope = _provider.CreateScope();
                var dbContext = scope.ServiceProvider.GetRequiredService <AgreementsContext>();

                EndingDateCalculator.SetEndingDate(newAgreementEntity, dbContext);
                newAgreementEntity.TerminationPeriod = GetTerminationPeriod(newAgreementEntity.MembershipId, dbContext);

                _ = dbContext.Agreements.Add(newAgreementEntity);
                _ = dbContext.SaveChanges();

                var installmentGenerator = new InstallmentGenerator(dbContext);
                installmentGenerator.AddInstallments(newAgreementEntity);

                _channel.BasicAck(ea.DeliveryTag, false);
            };

            _channel.BasicConsume("AS_AddAgreement", false, consumer);

            return(Task.CompletedTask);
        }
Beispiel #2
0
        protected override Task ExecuteAsync(CancellationToken stoppingToken)
        {
            stoppingToken.ThrowIfCancellationRequested();

            var consumer = new EventingBasicConsumer(_channel);

            consumer.Received += (ch, ea) =>
            {
                using var scope = _provider.CreateScope();
                var dbContext = scope.ServiceProvider.GetRequiredService <AgreementsContext>();

                var content         = Encoding.UTF8.GetString(ea.Body.ToArray());
                var deletedMemberId = JsonConvert.DeserializeObject <int>(content);

                var deletedMemberEntity = dbContext
                                          .Members
                                          .First(x => x.MemberId == deletedMemberId);

                _ = dbContext.Members.Remove(deletedMemberEntity);
                _ = dbContext.SaveChanges();

                var deletedMemberAgreements = dbContext.Agreements
                                              .Where(x => x.MemberId == deletedMemberEntity.MemberId)
                                              .ToList();

                var installmentGenerator = new InstallmentGenerator(dbContext);

                foreach (var agreement in deletedMemberAgreements)
                {
                    installmentGenerator.DeleteInstallments(agreement);
                    _ = dbContext.Remove(agreement);
                }

                _ = dbContext.SaveChanges();

                _channel.BasicAck(ea.DeliveryTag, false);
            };

            _channel.BasicConsume("AS_DeleteMember", false, consumer);

            return(Task.CompletedTask);
        }