Пример #1
0
        public async Task <DTO.TenantInfoDTO> AddTenant(DTO.TenantInfoDTO info)
        {
            var emailAlreadyExists = await _context.Tenants
                                     .Where(t => t.Email.ToLower() == info.Email.ToLower())
                                     .CountAsync() > 0;

            if (emailAlreadyExists)
            {
                return(null);
            }

            if (info == null)
            {
                return(null);
            }

            var tenant = new Tenant();

            tenant.FirstName   = info.FirstName;
            tenant.LastName    = info.LastName;
            tenant.Email       = info.Email;
            tenant.PhoneNumber = info.PhoneNumber;

            _context.Add(tenant);
            await _context.SaveChangesAsync();

            await AssignToUnit(tenant.TenantId, info.UnitNumber);

            await _context.SaveChangesAsync();

            return(new DTO.TenantInfoDTO(tenant, info.UnitNumber));
        }
        public async void BuildsDTO()
        {
            var options = TestUtil.GetMemDbOptions("OpensMaintenanceRequest");

            AptMgmtPortalAPI.DTO.MaintenanceRequestDTO dto;
            AptMgmtPortalAPI.Entity.MaintenanceRequest req;
            using (var db = new AptMgmtDbContext(options))
            {
                var mock = new Mock <ILogger <UserRepository> >();
                ILogger <UserRepository> logger = mock.Object;
                User user = TestUtil.NewUser(db);

                var repo = (IUser) new UserRepository(logger, db);

                req = new AptMgmtPortalAPI.Entity.MaintenanceRequest();
                req.MaintenanceRequestId = 999;
                req.OpeningUserId        = user.UserId;

                db.Add(req);
                db.SaveChanges();

                dto = await AptMgmtPortalAPI.DTO.MaintenanceRequestDTO.Build(req, repo);
            }

            Assert.Equal(req.MaintenanceRequestId, dto.MaintenanceRequestId);
        }
        public async Task <DataModel.Agreement> SignAgreement(int tenantId, int agreementId, DateTime startDate, DateTime endDate)
        {
            var agreement = await _context.Agreements
                            .Where(a => a.AgreementId == agreementId)
                            .FirstOrDefaultAsync();

            if (agreement == null)
            {
                return(null);
            }

            var signedAgreement = new SignedAgreement();

            signedAgreement.TenantId    = tenantId;
            signedAgreement.AgreementId = agreementId;
            signedAgreement.SignedDate  = DateTime.Now;
            signedAgreement.StartDate   = startDate;
            signedAgreement.EndDate     = endDate;

            _context.Add(signedAgreement);
            await _context.SaveChangesAsync();

            return(new DataModel.Agreement {
                AgreementId = signedAgreement.AgreementId,
                Title = agreement.Title,
                Text = agreement.Text,
                SignedDate = signedAgreement.SignedDate,
                StartDate = signedAgreement.StartDate,
                EndDate = signedAgreement.EndDate,
            });
        }
Пример #4
0
        public static Tenant NewTenant(AptMgmtDbContext context)
        {
            var tenant = new Tenant();

            context.Add(tenant);
            context.SaveChanges();
            return(tenant);
        }
Пример #5
0
        public static User NewUser(AptMgmtDbContext context)
        {
            var user = new User();

            context.Add(user);
            context.SaveChanges();
            return(user);
        }
Пример #6
0
        public static Unit NewUnit(AptMgmtDbContext context)
        {
            var unit = new Unit();

            unit.UnitNumber = "3111";
            unit.TenantId   = TestUtil.NewTenant(context).TenantId;
            context.Add(unit);
            context.SaveChanges();
            return(unit);
        }
Пример #7
0
        public static AgreementTemplate NewAgreement(AptMgmtDbContext context, string title)
        {
            var agreement = new AgreementTemplate();

            agreement.Title = title;

            context.Add(agreement);
            context.SaveChanges();

            return(agreement);
        }
Пример #8
0
        public static Unit NewUnit(AptMgmtDbContext context, string unitNumber)
        {
            var unit = new Unit();

            unit.UnitNumber = unitNumber;

            context.Add(unit);
            context.SaveChanges();

            return(unit);
        }
Пример #9
0
        public static User NewUserWithAnAPIKey(AptMgmtDbContext context)
        {
            var user = new User
            {
                ApiKey = "test-key100"
            };

            context.Add(user);
            context.SaveChanges();
            return(user);
        }
Пример #10
0
        public static Tenant NewTenant(AptMgmtDbContext context)
        {
            var tenant = new Tenant();

            tenant.FirstName = "testFirstName";
            tenant.Email     = "*****@*****.**";
            tenant.UserId    = TestUtil.NewUser(context).UserId;
            context.Add(tenant);
            context.SaveChanges();
            return(tenant);
        }
Пример #11
0
        public static Payment NewPayment(AptMgmtDbContext context, int tenantId)
        {
            var payment = new Payment();

            payment.TenantId = tenantId;

            context.Add(payment);
            context.SaveChanges();

            return(payment);
        }
Пример #12
0
        public static (AptMgmtPortalAPI.DTO.UserDTO, Tenant) UserInfoAndTenantForUserRepo(AptMgmtDbContext context)
        {
            var userInfo = TestUtil.NewUserDtoWithCredential(context);
            var tenant   = new Tenant
            {
                Email     = "testUser",
                UserId    = userInfo.UserId,
                FirstName = "original first name",
            };

            context.Add(tenant);
            context.SaveChanges();
            return(userInfo, tenant);
        }
Пример #13
0
        public static BillingPeriod NewBillingPeriod(AptMgmtDbContext context)
        {
            var period   = new BillingPeriod();
            var timeSpan = new TimeSpan(0, 0, 5);

            // All test data is 2 years into the future.
            var testPeriod = new TimeSpan(730, 0, 0, 0);

            period.PeriodStart = DateTime.Now + testPeriod - timeSpan;
            period.PeriodEnd   = DateTime.Now + testPeriod + timeSpan;

            context.Add(period);
            context.SaveChanges();

            return(period);
        }
Пример #14
0
        public static ResourceUsageRate NewResourceRate(AptMgmtDbContext context,
                                                        double rate,
                                                        ResourceType resource,
                                                        BillingPeriod period)
        {
            var newRate = new ResourceUsageRate();

            newRate.PeriodStart  = period.PeriodStart;
            newRate.PeriodEnd    = period.PeriodEnd;
            newRate.Rate         = rate;
            newRate.ResourceType = resource;

            context.Add(newRate);
            context.SaveChanges();

            return(newRate);
        }
Пример #15
0
        public static Agreement SignAgreement(AptMgmtDbContext context, int agreementId, int tenantId)
        {
            // All test data is 2 years into the future.
            var testPeriod = new TimeSpan(730, 0, 0, 0);

            var signedAgreement = new Agreement();

            signedAgreement.TenantId            = tenantId;
            signedAgreement.AgreementTemplateId = agreementId;
            signedAgreement.SignedDate          = DateTime.Now;
            signedAgreement.StartDate           = DateTime.Now + testPeriod - new TimeSpan(0, 0, 5);
            signedAgreement.EndDate             = DateTime.Now + testPeriod + new TimeSpan(0, 0, 5);

            context.Add(signedAgreement);
            context.SaveChanges();

            return(signedAgreement);
        }
Пример #16
0
        public static TenantResourceUsage UseResource(AptMgmtDbContext context,
                                                      int tenantId,
                                                      double amount,
                                                      ResourceType resourceType)
        {
            // All test data is 2 years into the future.
            var testPeriod       = new TimeSpan(730, 0, 0, 0);
            var consumedResource = new TenantResourceUsage
            {
                SampleTime   = DateTime.Now + testPeriod,
                UsageAmount  = amount,
                ResourceType = resourceType,
                TenantId     = tenantId,
            };

            context.Add(consumedResource);
            context.SaveChanges();

            return(consumedResource);
        }
        public async void GetsProjectedResourceUsages()
        {
            var options = TestUtil.GetMemDbOptions("GetsProjectedResourceUsages");

            var           testPeriod = new TimeSpan(730, 0, 0, 0);
            Tenant        tenant;
            BillingPeriod period;

            using (var db = new AptMgmtDbContext(options))
            {
                var repo = (ITenant) new TenantRepository(db);
                tenant = TestUtil.NewTenant(db);

                TestUtil.UseResource(db, tenant.TenantId, 5, ResourceType.Power);
                TestUtil.UseResource(db, tenant.TenantId, 5, ResourceType.Power);

                period = new BillingPeriod();
                var timeSpan = new TimeSpan(5, 0, 0, 0);

                // All test data is 2 years into the future.
                period.PeriodStart = DateTime.Now + testPeriod - timeSpan;
                period.PeriodEnd   = DateTime.Now + testPeriod + timeSpan;

                db.Add(period);

                db.SaveChanges();

                TestUtil.NewResourceRate(db, 1, ResourceType.Power, period);
                TestUtil.NewResourceRate(db, 2, ResourceType.Water, period);
            }

            using (var db = new AptMgmtDbContext(options))
            {
                var repo      = (IBill) new BillRepository(db);
                var projected = await repo.GetProjectedResourceUsages(tenant.TenantId, period, DateTime.Now + testPeriod);

                projected = projected.ToList();
                // Number will drift slightly due to DateTime.Now calls, round the total to get answer.
                Assert.Equal(18, Math.Round(projected.ElementAt(0).ProjectedCost()));
            }
        }
Пример #18
0
        public async Task <DTO.TenantInfoDTO> AddTenant(DTO.TenantInfoDTO info)
        {
            if (info == null)
            {
                return(null);
            }

            var tenant = new Tenant();

            tenant.FirstName   = info.FirstName;
            tenant.LastName    = info.LastName;
            tenant.Email       = info.Email;
            tenant.PhoneNumber = info.PhoneNumber;

            _context.Add(tenant);

            await AssignToUnit(tenant.TenantId, info.UnitNumber);

            await _context.SaveChangesAsync();

            return(new DTO.TenantInfoDTO(tenant, info.UnitNumber));
        }
Пример #19
0
        public async void EditsUserInfoWithId()
        {
            var options = TestUtil.GetMemDbOptions("EditsUserInfo");

            var mock = new Mock <ILogger <UserRepository> >();

            AptMgmtPortalAPI.Entity.User user;
            using (var db = new AptMgmtDbContext(options))
            {
                var repo     = (IUser) new UserRepository(mock.Object, db);
                var userInfo = TestUtil.NewUserDtoWithCredential(db);
                var tenant   = new Tenant
                {
                    Email     = "testUser",
                    UserId    = userInfo.UserId,
                    FirstName = "original first name",
                };
                db.Add(tenant);
                db.SaveChanges();

                user = await repo.NewUser(userInfo);
            }

            using (var db = new AptMgmtDbContext(options))
            {
                var repo     = (IUser) new UserRepository(mock.Object, db);
                var newName  = "new first name";
                var userInfo = new AptMgmtPortalAPI.DTO.UserDTO();
                userInfo.FirstName = newName;
                userInfo.LoginName = user.LoginName;
                userInfo.Password  = user.Password;
                var newInfo = await repo.UpdateUserInfo(user.UserId, userInfo);

                Assert.Equal(newName, newInfo.FirstName);
            }
        }