public void BuildingManager_Can_Set_Cotractor_For_Maitenance() { // Arrange MaintenanceRequest maintenanceRequest = new MaintenanceRequest(person, "Kvar", "Ne radi grijanje.", "Stan Mile, prvi kat."); RepairService serviceTypeForMock = new RepairService("Ličenje"); Mock<IRepairServicesRepository> repairServicesRepositoryMock = new Mock<IRepairServicesRepository>(); repairServicesRepositoryMock.Setup(x => x.GetById(23)).Returns(serviceTypeForMock); RepairService serviceType = repairServicesRepositoryMock.Object.GetById(23); Maintenance maintenance = new Maintenance(maintenanceRequest, Urgency.High, serviceType, building); LegalPerson legalPerson = new LegalPerson("12345678901", "Mile d.o.o."); Contractor contractor = new Contractor(legalPerson).AddRepairService(serviceType); BuildingManager buildingManager = maintenance.BuildingManager; buildingManager.AddContractor(contractor); // Act maintenance.SetContractor(contractor); // Assert var personSnapshot = new PersonSnapshot(contractor.LegalPerson); Assert.IsNotNull(maintenance.Contractor); Assert.AreEqual(personSnapshot.Oib, maintenance.Contractor.Oib, "Oibs aren't equal."); Assert.AreEqual(personSnapshot.FullName, maintenance.Contractor.FullName, "FullNames aren't equal."); Assert.AreEqual(personSnapshot.Address, maintenance.Contractor.Address, "Addresses aren't equal."); Assert.AreEqual(personSnapshot, maintenance.Contractor); }
public void Can_Save_Maintenance_To_DB() { // Arrange var person = new PhysicalPerson("12345678901", "Ime", "Prezime"); MaintenanceRequest maintenanceRequest = new MaintenanceRequest( person , "Kvar na grijanju" , "Grijanje ne radi" , "Prvi kat, stan 2"); City city = new City(10000, "Zagreb"); Cadastre cadastre = new Cadastre("Trnje", "12345", city); CadastralParticle cadastralParticle = new CadastralParticle(cadastre, "123", 23, "Opis"); LandRegistry landRegistry = new LandRegistry(cadastralParticle); var partitionSpace = landRegistry.CreatePartitionSpace("123", 12, "Opis etaže", person); LegalPerson legalPerson = new LegalPerson("12345678902", "Ime"); BuildingManager buildingManager = new BuildingManager(legalPerson); Building building = new Building(buildingManager) { LandRegistry = landRegistry }; RepairService repairService = new RepairService("Popravak grijanja"); Maintenance maintenance = new Maintenance(maintenanceRequest, Urgency.Normal, repairService, building); IMaintenancesRepository maintenancesRepository = new MaintenancesNHRepository(SessionFactory); // Act IList<Maintenance> maintenancesFromDb = null; using (var session = SessionFactory.OpenSession()) { using (var tx = session.BeginTransaction()) { session.Save(person); session.Save(city); session.Save(legalPerson); session.Save(cadastre); session.Save(landRegistry); session.Save(buildingManager); session.Save(building); session.Save(repairService); maintenancesRepository.SaveOrUpdate(maintenance); tx.Commit(); } using (var tx = session.BeginTransaction()) { maintenancesFromDb = maintenancesRepository.GetAll().ToList(); tx.Commit(); } } // Assert Assert.IsTrue(maintenancesFromDb.Count == 1, "No Maintenance from database."); }
public ActionResult Create(int id, CreateModel createModel) { Person submitter = null; if(ModelState.IsValid) { submitter = personsRepository.GetPersonByUsername(User.Identity.Name); MaintenanceRequest maintenanceRequest = new MaintenanceRequest( submitter, createModel.MaintenanceRequest.Subject, createModel.MaintenanceRequest.Description, createModel.MaintenanceRequest.Location); RepairService repairService = repairServicesRepository.GetById(createModel.RepairService); Building building = buildingsRepository.GetById(id); Maintenance maintenance = new Maintenance( maintenanceRequest, createModel.Urgency, repairService, building); maintenancesRepository.SaveOrUpdate(maintenance); var url = Url.Action("details", "maintenance", new {Id = maintenance.Id}, "http"); emailNotifier.NotifyOfMaintenanceCreation(maintenance, url); return RedirectToAction("index", new { Id = id }); } IList<Building> buildings = null; submitter = personsRepository.GetPersonByUsername(User.Identity.Name); if (User.IsInRole("owner")) { buildings = buildingsRepository.GetBuildingsByOwner(submitter); } else if (User.IsInRole("buildingmanager")) { buildings = buildingsRepository.GetBuildingsByManager(submitter as LegalPerson); } else { return new HttpUnauthorizedResult(); } var buildingsModel = Mapper.Map<IList<Building>, IList<BuildingListModel>>(buildings); var repairServicesModel = Mapper.Map<IEnumerable<RepairService>, IEnumerable<RepairServiceModel>>(repairServicesRepository.GetAll()); createModel.RepairServices = new SelectList(repairServicesModel, "Id", "Name"); createModel.Urgencies = new SelectList(new[] { new {Id = (int) Urgency.Low, Name = "Niska"}, new {Id = (int) Urgency.Normal, Name = "Normalna"}, new {Id = (int) Urgency.High, Name = "Visoka"} }, "Id", "Name"); createModel.Roles = Roles.GetRolesForUser(); return View(createModel); }
public void Person_Can_Issue_Maitenance_Request() { // Arrange MaintenanceRequest maintenanceRequest = new MaintenanceRequest(person, "Kvar", "Ne radi grijanje.", "Stan Mile, prvi kat."); RepairService serviceTypeForMock = new RepairService("Popravci grijanja i toplana"); Mock<IRepairServicesRepository> repairServicesRepositoryMock = new Mock<IRepairServicesRepository>(); repairServicesRepositoryMock.Setup(x => x.GetById(23)).Returns(serviceTypeForMock); RepairService serviceType = repairServicesRepositoryMock.Object.GetById(23); // Act Maintenance maintenance = new Maintenance(maintenanceRequest, Urgency.High, serviceType, building); // Assert Assert.AreEqual(maintenanceRequest, maintenance.MaintenanceRequest); Assert.AreEqual(StatusOfMaintenance.NotStarted, maintenance.StatusOfMaintenance); Assert.IsNotNull(maintenance.Urgency, "Hitnost nije definirana."); Assert.AreEqual(Urgency.High, maintenance.Urgency); Assert.IsNotNull(maintenance.ServiceType, "Usluga popravka nije definirana."); Assert.AreEqual(serviceType, maintenance.ServiceType); }
private string generateGeneralInfoOfMaintenance(Maintenance maintenance) { StringBuilder mailBodySb = new StringBuilder(); mailBodySb.AppendFormat("Za zgradu: {0}", maintenance.Building.Address).AppendLine(); mailBodySb.AppendFormat("Lokacija: {0}", maintenance.MaintenanceRequest.Location).AppendLine(); mailBodySb.AppendFormat("Naslov: {0}", maintenance.MaintenanceRequest.Subject).AppendLine(); mailBodySb.AppendFormat("Opis: {0}", maintenance.MaintenanceRequest.Description).AppendLine(); switch (maintenance.Urgency) { case Urgency.Low: mailBodySb.AppendLine("Hitnost: Niska"); break; case Urgency.Normal: mailBodySb.AppendLine("Hitnost: Normalna"); break; case Urgency.High: mailBodySb.AppendLine("Hitnost: Visoka"); break; default: break; } mailBodySb.AppendFormat("Vrsta: {0}", maintenance.ServiceType.Name).AppendLine(); mailBodySb.AppendFormat("Datum prijave: {0}", maintenance.MaintenanceRequest.DateTimeOfRequest.ToShortDateString()).AppendLine(); mailBodySb.AppendFormat("Prijavio: {0}", maintenance.MaintenanceRequest.Submitter.FullName); return mailBodySb.ToString(); }
/// <summary> /// Salje emailom obavijest o delegaciji kvara izvodacu poslova /// </summary> /// <param name="maintenance">odrzavanje</param> /// <param name="url"></param> public void NotifyOfMaintenanceDelegation(Maintenance maintenance, string url) { string mailSubject = "Delegiranje za održavanja/popravka:" + maintenance.MaintenanceRequest.Subject; StringBuilder mailBodySb = new StringBuilder(); mailBodySb.AppendLine("Delegiranje popravka/održavanja."); mailBodySb.AppendLine("----"); mailBodySb.AppendLine(generateGeneralInfoOfMaintenance(maintenance)); mailBodySb.AppendLine(); mailBodySb.AppendFormat("Izvođač radova: {0}", maintenance.Contractor.FullName).AppendLine(); mailBodySb.AppendFormat("Instrukcije upravitelja: {0}", maintenance.Instructions).AppendLine(); mailBodySb.AppendLine(); mailBodySb.AppendFormat("Detaljnije: {0}", url); string mailBody = mailBodySb.ToString(); using (var smtpClient = new SmtpClient()) { var contractor = personsRepository.GetByOib(maintenance.Contractor.Oib); string mailTo = housingMgmtUsersRepository.GetUserByPerson(contractor).Email; using (var mailMessage = new MailMessage(MAIL_FROM, mailTo)) { using (var alternateView = AlternateView.CreateAlternateViewFromString(mailBody)) { mailMessage.Subject = mailSubject; alternateView.TransferEncoding = TransferEncoding.SevenBit; mailMessage.AlternateViews.Add(alternateView); smtpClient.Send(mailMessage); mailMessage.Sender = new MailAddress(mailTo); smtpClient.Send(mailMessage); } } } }
/// <summary> /// Salje emailom obavijest o stvaranju novog odrzavanja /// </summary> /// <param name="maintenance">odrzavanje</param> /// <param name="url"></param> public void NotifyOfMaintenanceCreation(Maintenance maintenance, string url) { string mailSubject = "Zahtjev za održavanjem/popravkom:" + maintenance.MaintenanceRequest.Subject; StringBuilder mailBodySb = new StringBuilder(); mailBodySb.AppendLine("Kreiran je novi zahtjev za popravkom/održavanjem."); mailBodySb.AppendLine("----"); mailBodySb.AppendLine(generateGeneralInfoOfMaintenance(maintenance)); mailBodySb.AppendFormat("Detaljnije: {0}", url); string mailBody = mailBodySb.ToString(); using (var smtpClient = new SmtpClient()) { string mailToRepresentative = housingMgmtUsersRepository.GetUserByPerson(maintenance.Building.RepresentativeOfPartOwners).Email; string mailToManager = housingMgmtUsersRepository.GetUserByPerson(maintenance.Building.BuildingManager.LegalPerson).Email; using (var mailMessage = new MailMessage(MAIL_FROM, mailToManager)) { using (var alternateView = AlternateView.CreateAlternateViewFromString(mailBody)) { mailMessage.Subject = mailSubject; alternateView.TransferEncoding = TransferEncoding.SevenBit; mailMessage.AlternateViews.Add(alternateView); smtpClient.Send(mailMessage); mailMessage.Sender = new MailAddress(mailToRepresentative); smtpClient.Send(mailMessage); } } } }
/// <summary> /// Salje emailom obavijest o zavrsetku radova /// </summary> /// <param name="maintenance">odrzavanje</param> /// <param name="url"></param> public void NotifyOfMaintenanceCompletition(Maintenance maintenance, string url) { string mailSubject = "Završeno održavanje/popravak za:" + maintenance.MaintenanceRequest.Subject; StringBuilder mailBodySb = new StringBuilder(); mailBodySb.AppendLine("Delegiranje popravka/održavanja."); mailBodySb.AppendLine("----"); mailBodySb.AppendLine(generateGeneralInfoOfMaintenance(maintenance)); mailBodySb.AppendLine(); mailBodySb.AppendFormat("Izvođač radova: {0}", maintenance.Contractor.FullName).AppendLine(); mailBodySb.AppendFormat("Instrukcije upravitelja: {0}", maintenance.Instructions).AppendLine(); mailBodySb.AppendFormat("Zaključak izvođača radova: {0}", maintenance.ContractorsConclusion).AppendLine(); mailBodySb.AppendLine(); mailBodySb.AppendFormat("Detaljnije: {0}", url); string mailBody = mailBodySb.ToString(); using (var smtpClient = new SmtpClient()) { string mailTo = housingMgmtUsersRepository.GetUserByPerson(maintenance.Building.RepresentativeOfPartOwners).Email; using (var mailMessage = new MailMessage(MAIL_FROM, mailTo)) { using (var alternateView = AlternateView.CreateAlternateViewFromString(mailBody)) { mailMessage.Subject = mailSubject; alternateView.TransferEncoding = TransferEncoding.SevenBit; mailMessage.AlternateViews.Add(alternateView); smtpClient.Send(mailMessage); } } } }
/// <summary> /// Salje emailom obavijest o prihvacanju popravka kvara /// </summary> /// <param name="maintenance">odrzavanje</param> /// <param name="submitterUrl"></param> /// <param name="contractorUrl"></param> public void NotifyOfMaintenanceAcception(Maintenance maintenance, string submitterUrl, string contractorUrl) { string mailSubject = "Prihvaćeno održavanje/popravak za:" + maintenance.MaintenanceRequest.Subject; StringBuilder mailBodySb = new StringBuilder(); mailBodySb.AppendLine("Prihvaćeno održavanje/popravak."); mailBodySb.AppendLine("----"); mailBodySb.AppendLine(generateGeneralInfoOfMaintenance(maintenance)); mailBodySb.AppendLine(); mailBodySb.AppendFormat("Izvođač radova: {0}", maintenance.Contractor.FullName).AppendLine(); mailBodySb.AppendFormat("Instrukcije upravitelja: {0}", maintenance.Instructions).AppendLine(); mailBodySb.AppendFormat("Zaključak izvođača radova: {0}", maintenance.ContractorsConclusion).AppendLine(); mailBodySb.AppendLine(); if(maintenance.MaintenanceRemarks.Count > 0){ mailBodySb.AppendLine("Napomene predstavnika suvlasnika:"); foreach (var maintenanceRemark in maintenance.MaintenanceRemarks) { mailBodySb.AppendFormat("{0}: {1}", maintenanceRemark.RemarkDateTime.ToString("dd.MM.yyyy, hh:mm:ss"), maintenanceRemark.Remark).AppendLine(); } } mailBodySb.AppendLine(); string mailBody = mailBodySb.ToString(); using (var smtpClient = new SmtpClient()) { var contractorPerson = personsRepository.GetByOib(maintenance.Contractor.Oib); string contractorMailTo = housingMgmtUsersRepository.GetUserByPerson(contractorPerson).Email; using (var mailMessage = new MailMessage(MAIL_FROM, contractorMailTo)) { string mailBodyContractor = mailBody + string.Format("Detaljnije: {0}{1}", contractorUrl, Environment.NewLine); using (var alternateView = AlternateView.CreateAlternateViewFromString(mailBodyContractor)) { mailMessage.Subject = mailSubject; alternateView.TransferEncoding = TransferEncoding.SevenBit; mailMessage.AlternateViews.Add(alternateView); smtpClient.Send(mailMessage); } } string managerMailTo = housingMgmtUsersRepository.GetUserByPerson(maintenance.Building.BuildingManager.LegalPerson).Email; var submitterPerson = personsRepository.GetByOib(maintenance.MaintenanceRequest.Submitter.Oib); string submitterMailTo = housingMgmtUsersRepository.GetUserByPerson(submitterPerson).Email; using (var mailMessage = new MailMessage(MAIL_FROM, contractorMailTo)) { string mailBodyGeneral = mailBody + string.Format("Detaljnije: {0}{1}", submitterUrl, Environment.NewLine); using (var alternateView = AlternateView.CreateAlternateViewFromString(mailBodyGeneral)) { mailMessage.Subject = mailSubject; alternateView.TransferEncoding = TransferEncoding.SevenBit; mailMessage.AlternateViews.Add(alternateView); mailMessage.Sender = new MailAddress(managerMailTo); smtpClient.Send(mailMessage); mailMessage.Sender = new MailAddress(submitterMailTo); smtpClient.Send(mailMessage); } } } }