private void ConfigureDb(AppDbContext dbContext, params int[] months)
        {
            var tgUser1 = new TelegramUserEntity {
                Culture = "ru"
            };
            var tgUser2 = new TelegramUserEntity {
                Culture = "ru"
            };

            dbContext.TlUsers.Add(tgUser1);
            dbContext.TlUsers.Add(tgUser2);

            var playBillEntryWithDecreasedPrice = new PlaybillEntity
            {
                Performance = new PerformanceEntity
                {
                    Name     = "TestBallet",
                    Location = new LocationsEntity("Room2"),
                    Type     = new PerformanceTypeEntity("Ballet")
                },
                Url  = "TestUrl",
                When = new DateTime(2020, months.First(), 1),
            };

            dbContext.Playbill.Add(playBillEntryWithDecreasedPrice);

            //subscription for tgUser1 for particular performance
            dbContext.Subscriptions.Add(new SubscriptionEntity
            {
                TelegramUserId    = tgUser1.Id,
                LastUpdate        = DateTime.Now,
                PerformanceFilter = new PerformanceFilterEntity {
                    PerformanceId = playBillEntryWithDecreasedPrice.PerformanceId
                },
                TrackingChanges = (int)(ReasonOfChanges.PriceDecreased | ReasonOfChanges.StartSales)
            });

            foreach (var month in months.Skip(1))
            {
                DateTime startDate   = new DateTime(2020, month, 1);
                DateTime endDateTime = startDate.AddMonths(1).AddDays(-1);

                //subscription user2 for filter by date
                dbContext.Subscriptions.Add(new SubscriptionEntity
                {
                    TelegramUserId    = tgUser2.Id,
                    LastUpdate        = DateTime.Now,
                    PerformanceFilter = new PerformanceFilterEntity {
                        StartDate = startDate, EndDate = endDateTime
                    },
                    TrackingChanges = (int)(ReasonOfChanges.PriceDecreased | ReasonOfChanges.StartSales)
                });
            }

            dbContext.SaveChanges();
        }
Beispiel #2
0
        public async Task <bool> Delete(TelegramUserEntity userEntity)
        {
            _dbContext.TlUsers.Remove(userEntity);

            try
            {
                await _dbContext.SaveChangesAsync();

                return(true);
            }
            catch (Exception ex)
            {
                Trace.TraceError($"Failed to delete user item {ex.Message}");
                return(false);
            }
        }
Beispiel #3
0
        public async Task <TelegramUserEntity> Create(long userId, string culture, CancellationToken cancellationToken)
        {
            var entity = new TelegramUserEntity {
                Id = userId, Culture = culture
            };

            try
            {
                _dbContext.TlUsers.Add(entity);
                await _dbContext.SaveChangesAsync(cancellationToken);

                return(entity);
            }
            catch (Exception ex)
            {
                Trace.TraceInformation($"DbException {ex.Message}");
                return(null);
            }
        }
Beispiel #4
0
        public async Task <bool> Update(TelegramUserEntity newValue)
        {
            TelegramUserEntity oldValue = await GetById(newValue.Id);

            if (oldValue == null)
            {
                return(false);
            }

            _dbContext.Entry(newValue).State = EntityState.Modified;

            try
            {
                await _dbContext.SaveChangesAsync();

                return(true);
            }
            catch (Exception ex)
            {
                Trace.TraceError($"Failed to update chat item {ex.Message}");
                return(false);
            }
        }
        private async Task <long[]> ConfigureDb(AppDbContext dbContext)
        {
            DateTime dt1 = DateTime.Now.AddDays(-3);
            DateTime dt2 = DateTime.Now.AddDays(-2);
            DateTime dt3 = DateTime.Now.AddDays(-1);

            DateTime performanceDateTime = DateTime.Now.AddDays(10);

            var tgUser1 = new TelegramUserEntity {
                Culture = "ru"
            };
            var tgUser2 = new TelegramUserEntity {
                Culture = "ru"
            };
            var tgUser3 = new TelegramUserEntity {
                Culture = "ru"
            };

            dbContext.TlUsers.Add(tgUser1);
            dbContext.TlUsers.Add(tgUser2);

            var playbillEntryWithDecreasedPrice = new PlaybillEntity()
            {
                Performance = new PerformanceEntity()
                {
                    Name     = "TestOpera",
                    Location = new LocationsEntity("TestLocation"),
                    Type     = new PerformanceTypeEntity("Opera")
                },
                When    = performanceDateTime,
                Changes = new List <PlaybillChangeEntity>(new[]
                {
                    new PlaybillChangeEntity
                    {
                        LastUpdate      = dt1,
                        MinPrice        = 700,
                        ReasonOfChanges = (int)ReasonOfChanges.Creation,
                    },
                    new PlaybillChangeEntity
                    {
                        LastUpdate      = dt3,
                        MinPrice        = 500,
                        ReasonOfChanges = (int)ReasonOfChanges.PriceDecreased,
                    }
                })
            };

            dbContext.Playbill.Add(playbillEntryWithDecreasedPrice);

            //subscription for tgUser1 for particular performance
            dbContext.Subscriptions.Add(new SubscriptionEntity
            {
                TelegramUserId    = tgUser1.Id,
                LastUpdate        = dt2,
                PerformanceFilter = new PerformanceFilterEntity {
                    PerformanceId = playbillEntryWithDecreasedPrice.PerformanceId
                },
                TrackingChanges = (int)(ReasonOfChanges.PriceDecreased | ReasonOfChanges.StartSales)
            });

            //subscription user2 for filter by date
            dbContext.Subscriptions.Add(new SubscriptionEntity
            {
                TelegramUserId    = tgUser2.Id,
                LastUpdate        = dt2,
                PerformanceFilter = new PerformanceFilterEntity {
                    StartDate = performanceDateTime.AddDays(-1), EndDate = performanceDateTime.AddDays(2)
                },
                TrackingChanges = (int)(ReasonOfChanges.PriceDecreased | ReasonOfChanges.StartSales)
            });

            //subscription for user2 for particular performance with events price increased and start sales
            dbContext.Subscriptions.Add(new SubscriptionEntity
            {
                TelegramUserId    = tgUser3.Id,
                LastUpdate        = dt2,
                PerformanceFilter = new PerformanceFilterEntity {
                    PerformanceId = playbillEntryWithDecreasedPrice.PerformanceId
                },
                TrackingChanges = (int)(ReasonOfChanges.PriceIncreased | ReasonOfChanges.StartSales)
            });

            await dbContext.SaveChangesAsync();

            return(new[] { tgUser1.Id, tgUser2.Id });
        }