コード例 #1
0
        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);
        }
コード例 #2
0
        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.");
        }
コード例 #3
0
        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);
        }
コード例 #4
0
        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);
        }
コード例 #5
0
        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();
        }
コード例 #6
0
        /// <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);

                    }
                }

            }
        }
コード例 #7
0
        /// <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);

                    }
                }

            }
        }
コード例 #8
0
        /// <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);
                    }
                }

            }
        }
コード例 #9
0
        /// <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);
                    }
                }

            }
        }