public void StatusChanged(AppraisalCompanyBranch companyBranch, AppraisalCompanyStatus newStatus, AppraisalCompanyStatus oldStatus) { var statusMapper = new CompanyUserMapper(); var historyMapper = new CompanyStatusHistoryMapper(); foreach (var appraiserUser in _appraiserManagement.GetUsersForBranch(companyBranch.Id)) { if (appraiserUser.User.Roles.Count != 1 || appraiserUser.User.Roles.First().RoleType != RoleType.Appraiser || appraiserUser.Status == AppraiserUserStatus.Applied) continue; if (appraiserUser.Status == AppraiserUserStatus.Inactive && newStatus == AppraisalCompanyStatus.Suspended) continue; var userStatus = statusMapper.ToUserStatus(newStatus); if (newStatus == AppraisalCompanyStatus.Active) { var historyForCompany = _trackingRepository.GetAppraisalCompanyBranchStatusHistory(companyBranch.Id).FirstOrDefault(e => e.OldValue == AppraisalCompanyStatus.Active.ToString()); if (historyForCompany != null) { var history = _trackingRepository.GetAppraiserStatusHistory(appraiserUser.User.Id).ToArray(); var lastHistory = history.FirstOrDefault(e => e.ChangeEntity.ChangeSet.Date == historyForCompany.ChangeEntity.ChangeSet.Date); if (lastHistory == null) { lastHistory = history.FirstOrDefault(e => e.ChangeEntity.ChangeSet.Date <= historyForCompany.ChangeEntity.ChangeSet.Date); if (lastHistory != null) { userStatus = statusMapper.ToUserStatus(historyMapper.Mapp(lastHistory.NewValue)); } } else { userStatus = statusMapper.ToUserStatus(historyMapper.Mapp(lastHistory.OldValue)); } } } appraiserUser.Status = userStatus; } }
public void GetAppraiserCompanyInfo_should_throw_exception_if_illegal_branch_id_passed() { string email = "*****@*****.**"; int branchId = 1; var branch = new AppraisalCompanyBranch() { Id = branchId, Name = "branch 1" }; var company = new AppraisalCompanyDetail() { Id = 1, CompanyName = "company", Branches = new List<AppraisalCompanyBranch>(new AppraisalCompanyBranch[] { branch }), Contact = new AppraisalCompanyContact() { PhysicalAddress = new Address() { City = "Minsk" } } }; var user = new User() { Email = email, Roles = new List<Role>(new Role[] { Singletones.ReferenceManager.GetRole(RoleType.AppraisalCompanyAdmin) }) }; var appraiser = new AppraiserUser() { Id = 1, User = user, Branch = branch, Company = company, }; AppraiserManager.GetByEmail(Arg.Any<string>()).Returns(appraiser); AppraiserManager.GetById(Arg.Any<int>()).Returns(appraiser); AppraiserAccessManager.IsOtherUserDataAvailable(Arg.Any<int?>()).Returns(true); // act Target.Invoking(a => a.GetAppraiserCompanyInfo(email, null, branchId + 1)).ShouldThrow<ArgumentException>(); }
public void SaveAppraisalCompanyBranches(int appraisalCompanyId, AppraisalCompanyBranchesViewModel viewModel) { var company = _appraisalCompanyRepository.GetById(appraisalCompanyId); if (company != null) { foreach (var branche in viewModel.AppraisalCompanyBranchItems) { var existsBranch = company.Branches.FirstOrDefault(e => e.Id.ToString() == branche.BranchId); if (existsBranch != null) { existsBranch.Name = branche.Name; if (existsBranch.Status != branche.Status) { var oldStatus = existsBranch.Status; existsBranch.Status = branche.Status; _appraisalBrancheChangeStatusNotification.StatusChanged(existsBranch, existsBranch.Status, oldStatus); } if (existsBranch.Address == null) existsBranch.Address = new Address(); existsBranch.Address.City = branche.AddressViewModel.City; existsBranch.Address.State = branche.AddressViewModel.State.Substring(0, 2); existsBranch.Address.Street = branche.AddressViewModel.Street; existsBranch.Address.Street2 = branche.AddressViewModel.Street2; existsBranch.Address.ZIP = branche.AddressViewModel.ZIP; } else { var newBranche = new AppraisalCompanyBranch(); newBranche.Name = branche.Name; newBranche.Status = branche.Status; newBranche.Address = new Model.Entities.Address { City = branche.AddressViewModel.City, State = branche.AddressViewModel.State.Substring(0, 2), Street = branche.AddressViewModel.Street, Street2 = branche.AddressViewModel.Street2, ZIP = branche.AddressViewModel.ZIP }; company.Branches.Add(newBranche); } } _appraisalCompanyRepository.Update(company); } }
public void GetAppraiserCompanyInfo_should_return_AppraiserUserCompanyInfoViewModel() { string email = "*****@*****.**"; int branchId = 1; var branch = new AppraisalCompanyBranch() { Id = branchId, Name = "branch 1", Status = AppraisalCompanyStatus.Active }; var company = new AppraisalCompanyDetail() { Id = 1, CompanyName = "company", Branches = new List<AppraisalCompanyBranch>(new AppraisalCompanyBranch[] { branch }), Contact = new AppraisalCompanyContact() { PhysicalAddress = new Address() { City = "Minsk" } } }; var user = new User() { Email = email, Roles = new List<Role>(new Role[] { Singletones.ReferenceManager.GetRole(RoleType.AppraisalCompanyAdmin) }) }; var appraiser = new AppraiserUser() { Id = 1, User = user, Branch = branch, Company = company, }; UsersManager.GetById(Arg.Any<int>()).Returns(user); UsersManager.GetByEmail(Arg.Any<string>()).Returns(user); AppraiserManager.GetById(Arg.Any<int>()).Returns(appraiser); AppraiserManager.GetByEmail(Arg.Any<string>()).Returns(appraiser); AppraiserAccessManager.IsOtherUserDataAvailable(Arg.Any<int?>()).Returns(true); // act var actual = Target.GetAppraiserCompanyInfo(email, null, branchId); actual.Should().NotBeNull().And.BeOfType<AppraiserUserCompanyInfoViewModel>(); actual.CompanyID.Should().Be(company.Id); actual.BranchID.Should().Be(branch.Id); }