using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; using System.ComponentModel.DataAnnotations; using Sleis.Validation.Attribute; using Sleis.Models; using Sleis.Validation; using Sleis.ViewModels; using Sleis.Utility; using System.Text.RegularExpressions; namespace Sleis.ViewModels { public class FacilityView : BaseViewModel, ICustomField { public virtual FacilityModel Facility { get; set; } public virtual AgencyReport Report { get; set; } public virtual int AuthorizedUsers { get; set; } public virtual UserView User { get; set; } public virtual SelectList ProSysCodes { get; set; } public virtual SelectList StateCountyFips { get; set; } public virtual SelectList FacilityNameTypes { get; set; } //TODO: Refactored a bit so that we can pull from list of contacts defined on facility, rather than populating each of these from the DB manually. private FacilityContact _EmissionContact; public virtual FacilityContact EmissionContact { get { if (Facility != null && Facility.Contacts != null && Facility.Contacts.Count > 0 && Facility.Contacts.Exists(c => c.Person.Type == FacilityContactType.Emissions)) { return Facility.Contacts.SingleOrDefault(c => c.Person.Type == FacilityContactType.Emissions); } return _EmissionContact; } set { _EmissionContact = value; } } private FacilityContact _PermitContact; public virtual FacilityContact PermitContact { get { if (Facility != null && Facility.Contacts != null && Facility.Contacts.Count > 0 && Facility.Contacts.Exists(c=>c.Person.Type == FacilityContactType.Permit)) { return Facility.Contacts.SingleOrDefault(c => c.Person.Type == FacilityContactType.Permit); } return _PermitContact; } set { _PermitContact = value; } } private FacilityContact _ComplianceContact { get; set; } public virtual FacilityContact ComplianceContact { get { if (Facility != null && Facility.Contacts != null && Facility.Contacts.Count > 0 && Facility.Contacts.Exists(c => c.Person.Type == FacilityContactType.Compliance)) { return Facility.Contacts.SingleOrDefault(c => c.Person.Type == FacilityContactType.Compliance); } return _ComplianceContact; } set { _ComplianceContact = value; } } public virtual List CustomFields { get; set; } public FacilityView() { Report = new AgencyReport(); //instantiate the correct type if (SessionUtility.CurrentUser.IsAgencyUser()) { Facility = new AgencyFacilityModel(); } else { Facility = new PublicFacilityModel(); } //Facility = new PublicFacilityModel(); EmissionContact = new FacilityContact(SessionUtility.CurrentUser.IsAgencyUser()); PermitContact = new FacilityContact(SessionUtility.CurrentUser.IsAgencyUser()); ComplianceContact = new FacilityContact(SessionUtility.CurrentUser.IsAgencyUser()); //Mail = new FacilityMailAddressModel(); //Site = new FacilitySiteAddressModel(); User = new UserView(); CustomFields = new List(); ProSysCodes = new SelectList(LookupUtility.Get(), "Code", "CodeDescription"); StateCountyFips = new SelectList(LookupUtility.Get(), "Code", "CountyName"); AlternateName name = new AlternateName(); FacilityNameTypes = EnumUtility.CreateSelectList(); } public override void SetContext(string parentContext) { Facility.SetContext(parentContext); ValidationContxt = Facility.ValidationContxt; Report.SetContext(ValidationContxt); EmissionContact.SetContext(ValidationContxt); PermitContact.SetContext(ValidationContxt); ComplianceContact.SetContext(ValidationContxt); if (Facility.MailAddress != null) { Facility.MailAddress.ValidationContxt = String.Format("{0} Mail Address", ValidationContxt); } if (Facility.SiteAddress != null) { Facility.SiteAddress.ValidationContxt = String.Format("{0} Site Address", ValidationContxt); } CustomFields.ForEach(x => x.SetContext(ValidationContxt)); } } }