using System; using System.Collections.Generic; using System.Linq; using System.Web; using Sleis.Models; using Sleis.ViewModels; using NHibernate; using Sleis.Models.CustomFields; using Sleis.Utility; namespace Sleis.Service { public class PublicFacilityService : FacilityService, IFacilityService { public override void SaveFacility(FacilityModel facility, FacilityAddressModel siteAddress, FacilityAddressModel mailAddress, List customFields) { PublicFacilityModel fac = facility as PublicFacilityModel; using (ISession session = FacilityData.GetSession()) { using (ITransaction tran = session.BeginTransaction()) { facility.LastUpdated = DateTime.Now; facility.LastUpdatedBy = SessionUtility.CurrentUser; //save facility FacilityData.SaveOrUpdate(fac, session); //save addresses FacilitySiteAddressData.UpdateSiteAddress(session, fac.Id, siteAddress); FacilityMailAddressData.UpdateMailAddress(session, fac.Id, mailAddress); //save contact connections //save contact type //delete all first. Save everything as new FacilityContactMethodData.DeleteContactMethodsByFacility(fac.Id, session); FacilityContactData.SaveFacilityContacts(session, fac.Id, fac.Contacts[0], fac.Contacts[1], fac.Contacts[2]); foreach (FacilityContact c in fac.Contacts) { if (c.HasData) { FacilityContactMethodData.SaveFacilityContactMethods(session, c); } } /*Removed Per Bret 10/24/2012 iTest#1077 if (String.Equals(fac.FacilityStatus, "PS", StringComparison.OrdinalIgnoreCase)) { //Set Related Control Devices Status List controlDevs = ControlDeviceData.GetControlDevicesByFacility(facility.Id); controlDevs.ForEach(x => { x.StatusCode = "PS"; x.StatusEffectiveDate = facility.FacilityStatusAsOfDate; x.LastUpdated = DateTime.Now; x.LastUpdatedBy = SessionUtility.CurrentUser; ControlDeviceData.Update(x as PublicControlDevice, session); }); //Set Related Release Points Status List releasePoints = ReleasePointData.GetReleasePointsByFacility(facility.Id); releasePoints.ForEach(x=>{ x.StatusCode = "PS"; x.StatusAsOfDate = facility.FacilityStatusAsOfDate; x.LastUpdated = DateTime.Now; x.LastUpdatedBy = SessionUtility.CurrentUser; ControlDeviceData.Update(x as PublicReleasePoint, session); }); //Set Related Emission Units Status List emisUnits = EmissionUnitData.GetEmissionUnitsByFacility(facility.Id); emisUnits.ForEach(x => { x.StatusCode = "PS"; x.StatusEffectiveDate = facility.FacilityStatusAsOfDate; x.LastUpdated = DateTime.Now; x.LastUpdatedBy = SessionUtility.CurrentUser; ControlDeviceData.Update(x as PublicEmissionUnit, session); }); } */ //save NAICS FacilityNaicsData.SaveOrUpdate(session, fac.Id, fac.Naics); //Custom Fields - Only if there are any SaveCustomFields(customFields, fac.Id, session); //commit tran.Commit(); } } } public override FacilityModel GetFacility(int id) { PublicFacilityModel facility = FacilityData.GetById(id); FacilityNaicsModel naics = FacilityNaicsData.GetPrimaryNaics(id); if (naics != null) { facility.Naics = naics.Naics; facility.FacNaics = FacilityNaicsData.GetSingle(x => x.Code == naics.Naics); } List contacts = FacilityContactData.GetAllFacilityContacts(id).ToList(); facility.Contacts = new List(); foreach (FacilityContactModel cm in contacts) { FacilityContact fc = new FacilityContact(cm); if (fc.HasData) { fc.Contacts = FacilityContactMethodData.GetFacilityContactMethods(fc.Id); } facility.Contacts.Add(fc); } facility.LastUpdatedBy = UserData.GetById(facility.LastUpdatedBy.Id); return facility; } public override FacilityModel GetFacilityByReport(int reportId) { FacilityModel facility = FacilityData.GetReportFacility(reportId); FacilityNaicsModel naics = FacilityNaicsData.GetPrimaryNaics(facility.Id); if (naics != null) { facility.Naics = naics.Naics; } List contacts = FacilityContactData.GetAllFacilityContacts(facility.Id).ToList(); facility.Contacts = new List(); foreach (FacilityContactModel cm in contacts) { FacilityContact fc = new FacilityContact(cm); if (fc.HasData) { fc.Contacts = FacilityContactMethodData.GetFacilityContactMethods(fc.Id); } facility.Contacts.Add(fc); } facility.SiteAddress = FacilitySiteAddressData.GetFacilitySiteAddress(facility.Id); facility.MailAddress = FacilityMailAddressData.GetFacilityMailAddress(facility.Id); if (facility.LastUpdatedBy != null && facility.LastUpdatedBy.Id > 0) { facility.LastUpdatedBy = UserData.GetById(facility.LastUpdatedBy.Id); } return facility; } public override void LoadFacility(FacilityModel facility) { } } }