示例#1
0
        public async Task <Customer> AddAsync(Customer customer)
        {
            using var uow = new UnitOfWork(_databaseContextProvider.Create());
            CustomerDto newCustomer = await uow.Customers.AddAsync(customer.ToData());

            await uow.SaveChangesAsync();

            return(newCustomer.ToCore());
        }
示例#2
0
        public async Task <Region> AddRegionAsync(Region region)
        {
            using var uow = new UnitOfWork(_contextProvider.Create());
            var newRegion = region.ToEntity();
            await uow.Regions.AddAsync(newRegion);

            await uow.SaveChangesAsync();

            return(newRegion.ToCore());
        }
示例#3
0
        public async Task <BillingPeriod> AddAsync(BillingPeriod item)
        {
            using (var uow = new UnitOfWork(_databaseContextProvider.Create()))
            {
                BillingPeriodDto operation = await uow.BillingPeriods.AddAsync(item.ToData());

                await uow.SaveChangesAsync();

                return(operation?.ToCore());
            }
        }
示例#4
0
        public async Task <MoneyOperation> AddAsync(MoneyOperation item)
        {
            using (var uow = new UnitOfWork(_databaseContextProvider.Create()))
            {
                MoneyOperationDto operation = await uow.MoneyOperations.AddAsync(item.ToData());

                await uow.SaveChangesAsync();

                return(operation.ToCore());
            }
        }
示例#5
0
        public async Task <ICollection <Receipt> > GetReceiptsInPeriodAsync(DateTime periodFrom, DateTime periodTo, long groupId)
        {
            using var uow = new UnitOfWork(_databaseContextProvider.Create());
            var billingPeriods = await uow.BillingPeriods.GetListAsync(x => x.GroupId == groupId);

            var billingPeriodsIds = billingPeriods.Select(x => x.Id).ToHashSet();
            var receipts          = await uow.Receipts.GetListAsync(x =>
                                                                    x.PurchaseTime >= periodFrom && x.PurchaseTime < periodTo && billingPeriodsIds.Contains(x.BillingPeriodId));

            return(receipts.Select(x => x.ToCore()).ToList());
        }
示例#6
0
        public async Task <Group> AddAsync(string chatToken, string adminToken, string chatName)
        {
            using (var uow = new UnitOfWork(_databaseContextProvider.Create()))
            {
                GroupDto newGroup = await uow.Groups.AddAsync(new GroupDto
                {
                    ChatToken  = chatToken,
                    AdminToken = adminToken,
                    ChatName   = chatName,
                });

                await uow.SaveChangesAsync();

                return(newGroup.ToCore());
            }
        }
        public async Task UpdateDisappearedStatusAsync()
        {
            using var uow = new UnitOfWork(_contextProvider.Create());
            var activityExpiredDate = DateTime.UtcNow - DisappearedTimeout;
            var apartments          = await uow.Apartments
                                      .GetAsync(x => x.DisappearedDate == null && x.PublishingDate < activityExpiredDate);

            var apartmentsChanges = new List <ItemChangeEntity>();

            foreach (var apartment in apartments)
            {
                var disappearedDate = DateTime.UtcNow;
                apartmentsChanges.Add(new ItemChangeEntity
                {
                    Table                = ApartmentEntity.TableName,
                    ObjectId             = apartment.Id,
                    PropertyName         = nameof(ApartmentEntity.DisappearedDate),
                    PropertyTypeFullName = typeof(DateTime?).FullName,
                    OldValueJson         = JsonConvert.SerializeObject(apartment.DisappearedDate),
                    NewValueJson         = JsonConvert.SerializeObject(disappearedDate)
                });
                apartment.DisappearedDate = disappearedDate;
            }

            if (apartments.Length > 0)
            {
                _logger.Trace($"{GetType().Name}: объявления со следующими Ids теперь помечены как устаревшие: " +
                              string.Join(", ", apartments.Select(x => x.Id)));
            }

            await uow.Apartments.UpdateAsync(apartments);

            await uow.ItemsChanges.AddAsync(apartmentsChanges);

            await uow.SaveChangesAsync();
        }