public MineSiteInformationBO WriteDataToTables(int PermitKey, ModelStateDictionary ModelState)
        {
            MineSiteInformationBO data = new MineSiteInformationBO();

            data.SiteName = this.SiteName;
            data.MineType = this.MineType;
            data.ProposedReminedAcres = this.ProposedReminedAcres;
            data.MSHAID = this.MSHAID;
            data.PermitKey = PermitKey;
            data.MineSiteAcreage = new List<MineSiteAcreageDO>();

            if (this.TribalPermittedMineral > 0)
            {
                MineSiteAcreageDO NewRow = new MineSiteAcreageDO()
                {
                    MineSiteCategoryID = "Tribal",
                    MineSiteTopicID = "Permitted Mineral",
                    ProposedAmount = this.TribalPermittedMineral,
                    PermitKey = PermitKey
                };
                data.MineSiteAcreage.Add(NewRow);
            }

            if (this.FederalPermittedMineral > 0)
            {
                MineSiteAcreageDO NewRow = new MineSiteAcreageDO()
                {
                    MineSiteCategoryID = "Federal",
                    MineSiteTopicID = "Permitted Mineral",
                    ProposedAmount = this.FederalPermittedMineral,
                    PermitKey = PermitKey
                };
                data.MineSiteAcreage.Add(NewRow);
            }

            if (this.StatePermittedMineral > 0)
            {
                MineSiteAcreageDO NewRow = new MineSiteAcreageDO()
                {
                    MineSiteCategoryID = "State",
                    MineSiteTopicID = "Permitted Mineral",
                    ProposedAmount = this.StatePermittedMineral,
                    PermitKey = PermitKey
                };
                data.MineSiteAcreage.Add(NewRow);
            }

            if (this.PrivatePermittedMineral > 0)
            {
                MineSiteAcreageDO NewRow = new MineSiteAcreageDO()
                {
                    MineSiteCategoryID = "Private",
                    MineSiteTopicID = "Permitted Mineral",
                    ProposedAmount = this.PrivatePermittedMineral,
                    PermitKey = PermitKey
                };
                data.MineSiteAcreage.Add(NewRow);
            }

            if (this.CountyPermittedMineral > 0)
            {
                MineSiteAcreageDO NewRow = new MineSiteAcreageDO()
                {
                    MineSiteCategoryID = "County",
                    MineSiteTopicID = "Permitted Mineral",
                    ProposedAmount = this.CountyPermittedMineral,
                    PermitKey = PermitKey
                };
                data.MineSiteAcreage.Add(NewRow);
            }

            if (this.TribalPermittedSurface > 0)
            {
                MineSiteAcreageDO NewRow = new MineSiteAcreageDO()
                {
                    MineSiteCategoryID = "Tribal",
                    MineSiteTopicID = "Permitted Surface",
                    ProposedAmount = this.TribalPermittedSurface,
                    PermitKey = PermitKey
                };
                data.MineSiteAcreage.Add(NewRow);
            }

            if (this.FederalPermittedSurface > 0)
            {
                MineSiteAcreageDO NewRow = new MineSiteAcreageDO()
                {
                    MineSiteCategoryID = "Federal",
                    MineSiteTopicID = "Permitted Surface",
                    ProposedAmount = this.FederalPermittedSurface,
                    PermitKey = PermitKey
                };
                data.MineSiteAcreage.Add(NewRow);
            }

            if (this.StatePermittedSurface > 0)
            {
                MineSiteAcreageDO NewRow = new MineSiteAcreageDO()
                {
                    MineSiteCategoryID = "State",
                    MineSiteTopicID = "Permitted Surface",
                    ProposedAmount = this.StatePermittedSurface,
                    PermitKey = PermitKey
                };
                data.MineSiteAcreage.Add(NewRow);
            }

            if (this.PrivatePermittedSurface > 0)
            {
                MineSiteAcreageDO NewRow = new MineSiteAcreageDO()
                {
                    MineSiteCategoryID = "Private",
                    MineSiteTopicID = "Permitted Surface",
                    ProposedAmount = this.PrivatePermittedSurface,
                    PermitKey = PermitKey
                };
                data.MineSiteAcreage.Add(NewRow);
            }

            if (this.CountyPermittedSurface > 0)
            {
                MineSiteAcreageDO NewRow = new MineSiteAcreageDO()
                {
                    MineSiteCategoryID = "County",
                    MineSiteTopicID = "Permitted Surface",
                    ProposedAmount = this.CountyPermittedSurface,
                    PermitKey = PermitKey
                };
                data.MineSiteAcreage.Add(NewRow);
            }
            if (this.TribalDisturbedMineral > 0)
            {
                MineSiteAcreageDO NewRow = new MineSiteAcreageDO()
                {
                    MineSiteCategoryID = "Tribal",
                    MineSiteTopicID = "Disturbed Mineral",
                    ProposedAmount = this.TribalDisturbedMineral,
                    PermitKey = PermitKey
                };
                data.MineSiteAcreage.Add(NewRow);
            }

            if (this.FederalDisturbedMineral > 0)
            {
                MineSiteAcreageDO NewRow = new MineSiteAcreageDO()
                {
                    MineSiteCategoryID = "Federal",
                    MineSiteTopicID = "Disturbed Mineral",
                    ProposedAmount = this.FederalDisturbedMineral,
                    PermitKey = PermitKey
                };
                data.MineSiteAcreage.Add(NewRow);
            }

            if (this.StateDisturbedMineral > 0)
            {
                MineSiteAcreageDO NewRow = new MineSiteAcreageDO()
                {
                    MineSiteCategoryID = "State",
                    MineSiteTopicID = "Disturbed Mineral",
                    ProposedAmount = this.StateDisturbedMineral,
                    PermitKey = PermitKey
                };
                data.MineSiteAcreage.Add(NewRow);
            }

            if (this.PrivateDisturbedMineral > 0)
            {
                MineSiteAcreageDO NewRow = new MineSiteAcreageDO()
                {
                    MineSiteCategoryID = "Private",
                    MineSiteTopicID = "Disturbed Mineral",
                    ProposedAmount = this.PrivateDisturbedMineral,
                    PermitKey = PermitKey
                };
                data.MineSiteAcreage.Add(NewRow);
            }

            if (this.CountyDisturbedMineral > 0)
            {
                MineSiteAcreageDO NewRow = new MineSiteAcreageDO()
                {
                    MineSiteCategoryID = "County",
                    MineSiteTopicID = "Disturbed Mineral",
                    ProposedAmount = this.CountyDisturbedMineral,
                    PermitKey = PermitKey
                };
                data.MineSiteAcreage.Add(NewRow);
            }

            if (this.TribalDisturbedSurface > 0)
            {
                MineSiteAcreageDO NewRow = new MineSiteAcreageDO()
                {
                    MineSiteCategoryID = "Tribal",
                    MineSiteTopicID = "Disturbed Surface",
                    ProposedAmount = this.TribalDisturbedSurface,
                    PermitKey = PermitKey
                };
                data.MineSiteAcreage.Add(NewRow);
            }

            if (this.FederalDisturbedSurface > 0)
            {
                MineSiteAcreageDO NewRow = new MineSiteAcreageDO()
                {
                    MineSiteCategoryID = "Federal",
                    MineSiteTopicID = "Disturbed Surface",
                    ProposedAmount = this.FederalDisturbedSurface,
                    PermitKey = PermitKey
                };
                data.MineSiteAcreage.Add(NewRow);
            }

            if (this.StateDisturbedSurface > 0)
            {
                MineSiteAcreageDO NewRow = new MineSiteAcreageDO()
                {
                    MineSiteCategoryID = "State",
                    MineSiteTopicID = "Disturbed Surface",
                    ProposedAmount = this.StateDisturbedSurface,
                    PermitKey = PermitKey
                };
                data.MineSiteAcreage.Add(NewRow);
            }

            if (this.PrivateDisturbedSurface > 0)
            {
                MineSiteAcreageDO NewRow = new MineSiteAcreageDO()
                {
                    MineSiteCategoryID = "Private",
                    MineSiteTopicID = "Disturbed Surface",
                    ProposedAmount = this.PrivateDisturbedSurface,
                    PermitKey = PermitKey
                };
                data.MineSiteAcreage.Add(NewRow);
            }

            if (this.CountyDisturbedSurface > 0)
            {
                MineSiteAcreageDO NewRow = new MineSiteAcreageDO()
                {
                    MineSiteCategoryID = "County",
                    MineSiteTopicID = "Disturbed Surface",
                    ProposedAmount = this.CountyDisturbedSurface,
                    PermitKey = PermitKey
                };
                data.MineSiteAcreage.Add(NewRow);
            }

            if (this.TribalReservedTonnage > 0)
            {
                MineSiteAcreageDO NewRow = new MineSiteAcreageDO()
                {
                    MineSiteCategoryID = "Tribal",
                    MineSiteTopicID = "Reserved Tonnage",
                    ProposedAmount = this.TribalReservedTonnage,
                    PermitKey = PermitKey
                };
                data.MineSiteAcreage.Add(NewRow);
            }

            if (this.FederalReservedTonnage > 0)
            {
                MineSiteAcreageDO NewRow = new MineSiteAcreageDO()
                {
                    MineSiteCategoryID = "Federal",
                    MineSiteTopicID = "Reserved Tonnage",
                    ProposedAmount = this.FederalReservedTonnage,
                    PermitKey = PermitKey
                };
                data.MineSiteAcreage.Add(NewRow);
            }

            if (this.StateReservedTonnage > 0)
            {
                MineSiteAcreageDO NewRow = new MineSiteAcreageDO()
                {
                    MineSiteCategoryID = "State",
                    MineSiteTopicID = "Reserved Tonnage",
                    ProposedAmount = this.StateReservedTonnage,
                    PermitKey = PermitKey
                };
                data.MineSiteAcreage.Add(NewRow);
            }

            if (this.PrivateReservedTonnage > 0)
            {
                MineSiteAcreageDO NewRow = new MineSiteAcreageDO()
                {
                    MineSiteCategoryID = "Private",
                    MineSiteTopicID = "Reserved Tonnage",
                    ProposedAmount = this.PrivateReservedTonnage,
                    PermitKey = PermitKey
                };
                data.MineSiteAcreage.Add(NewRow);
            }

            if (this.CountyReservedTonnage > 0)
            {
                MineSiteAcreageDO NewRow = new MineSiteAcreageDO()
                {
                    MineSiteCategoryID = "County",
                    MineSiteTopicID = "Reserved Tonnage",
                    ProposedAmount = this.CountyReservedTonnage,
                    PermitKey = PermitKey
                };
                data.MineSiteAcreage.Add(NewRow);
            }
            return data;
        }
        public MineSiteInformationVM(MineSiteInformationBO BO)
        {
            this.SiteName = BO.SiteName;
            this.MineType = BO.MineType;
            this.ProposedReminedAcres = BO.ProposedReminedAcres;
            this.MSHAID = BO.MSHAID;

            if (BO.MineSiteAcreage.Exists(x => x.MineSiteCategoryID == "Federal" & x.MineSiteTopicID == "Permitted Mineral"))
                this.FederalPermittedMineral = BO.MineSiteAcreage.Find(x => x.MineSiteCategoryID == "Federal" & x.MineSiteTopicID == "Permitted Mineral").ProposedAmount;

            if (BO.MineSiteAcreage.Exists(x => x.MineSiteCategoryID == "Tribal" & x.MineSiteTopicID == "Permitted Mineral"))
                this.TribalPermittedMineral = BO.MineSiteAcreage.Find(x => x.MineSiteCategoryID == "Tribal" & x.MineSiteTopicID == "Permitted Mineral").ProposedAmount;

            if (BO.MineSiteAcreage.Exists(x => x.MineSiteCategoryID == "State" & x.MineSiteTopicID == "Permitted Mineral"))
                this.StatePermittedMineral = BO.MineSiteAcreage.Find(x => x.MineSiteCategoryID == "State" & x.MineSiteTopicID == "Permitted Mineral").ProposedAmount;

            if (BO.MineSiteAcreage.Exists(x => x.MineSiteCategoryID == "Private" & x.MineSiteTopicID == "Permitted Mineral"))
                this.PrivatePermittedMineral = BO.MineSiteAcreage.Find(x => x.MineSiteCategoryID == "Private" & x.MineSiteTopicID == "Permitted Mineral").ProposedAmount;

            if (BO.MineSiteAcreage.Exists(x => x.MineSiteCategoryID == "County" & x.MineSiteTopicID == "Permitted Mineral"))
                this.CountyPermittedMineral = BO.MineSiteAcreage.Find(x => x.MineSiteCategoryID == "County" & x.MineSiteTopicID == "Permitted Mineral").ProposedAmount;

            if (BO.MineSiteAcreage.Exists(x => x.MineSiteCategoryID == "Federal" & x.MineSiteTopicID == "Permitted Surface"))
                this.FederalPermittedSurface = BO.MineSiteAcreage.Find(x => x.MineSiteCategoryID == "Federal" & x.MineSiteTopicID == "Permitted Surface").ProposedAmount;

            if (BO.MineSiteAcreage.Exists(x => x.MineSiteCategoryID == "Tribal" & x.MineSiteTopicID == "Permitted Surface"))
                this.TribalPermittedSurface = BO.MineSiteAcreage.Find(x => x.MineSiteCategoryID == "Tribal" & x.MineSiteTopicID == "Permitted Surface").ProposedAmount;

            if (BO.MineSiteAcreage.Exists(x => x.MineSiteCategoryID == "State" & x.MineSiteTopicID == "Permitted Surface"))
                this.StatePermittedSurface = BO.MineSiteAcreage.Find(x => x.MineSiteCategoryID == "State" & x.MineSiteTopicID == "Permitted Surface").ProposedAmount;

            if (BO.MineSiteAcreage.Exists(x => x.MineSiteCategoryID == "Private" & x.MineSiteTopicID == "Permitted Surface"))
                this.PrivatePermittedSurface = BO.MineSiteAcreage.Find(x => x.MineSiteCategoryID == "Private" & x.MineSiteTopicID == "Permitted Surface").ProposedAmount;

            if (BO.MineSiteAcreage.Exists(x => x.MineSiteCategoryID == "County" & x.MineSiteTopicID == "Permitted Surface"))
                this.CountyPermittedSurface = BO.MineSiteAcreage.Find(x => x.MineSiteCategoryID == "County" & x.MineSiteTopicID == "Permitted Surface").ProposedAmount;

            if (BO.MineSiteAcreage.Exists(x => x.MineSiteCategoryID == "Federal" & x.MineSiteTopicID == "Disturbed Mineral"))
                this.FederalDisturbedMineral = BO.MineSiteAcreage.Find(x => x.MineSiteCategoryID == "Federal" & x.MineSiteTopicID == "Disturbed Mineral").ProposedAmount;

            if (BO.MineSiteAcreage.Exists(x => x.MineSiteCategoryID == "Tribal" & x.MineSiteTopicID == "Disturbed Mineral"))
                this.TribalDisturbedMineral = BO.MineSiteAcreage.Find(x => x.MineSiteCategoryID == "Tribal" & x.MineSiteTopicID == "Disturbed Mineral").ProposedAmount;

            if (BO.MineSiteAcreage.Exists(x => x.MineSiteCategoryID == "State" & x.MineSiteTopicID == "Disturbed Mineral"))
                this.StateDisturbedMineral = BO.MineSiteAcreage.Find(x => x.MineSiteCategoryID == "State" & x.MineSiteTopicID == "Disturbed Mineral").ProposedAmount;

            if (BO.MineSiteAcreage.Exists(x => x.MineSiteCategoryID == "Private" & x.MineSiteTopicID == "Disturbed Mineral"))
                this.PrivateDisturbedMineral = BO.MineSiteAcreage.Find(x => x.MineSiteCategoryID == "Private" & x.MineSiteTopicID == "Disturbed Mineral").ProposedAmount;

            if (BO.MineSiteAcreage.Exists(x => x.MineSiteCategoryID == "County" & x.MineSiteTopicID == "Disturbed Mineral"))
                this.CountyDisturbedMineral = BO.MineSiteAcreage.Find(x => x.MineSiteCategoryID == "County" & x.MineSiteTopicID == "Disturbed Mineral").ProposedAmount;

            if (BO.MineSiteAcreage.Exists(x => x.MineSiteCategoryID == "Federal" & x.MineSiteTopicID == "Disturbed Surface"))
                this.FederalDisturbedSurface = BO.MineSiteAcreage.Find(x => x.MineSiteCategoryID == "Federal" & x.MineSiteTopicID == "Disturbed Surface").ProposedAmount;

            if (BO.MineSiteAcreage.Exists(x => x.MineSiteCategoryID == "Tribal" & x.MineSiteTopicID == "Disturbed Surface"))
                this.TribalDisturbedSurface = BO.MineSiteAcreage.Find(x => x.MineSiteCategoryID == "Tribal" & x.MineSiteTopicID == "Disturbed Surface").ProposedAmount;

            if (BO.MineSiteAcreage.Exists(x => x.MineSiteCategoryID == "State" & x.MineSiteTopicID == "Disturbed Surface"))
                this.StateDisturbedSurface = BO.MineSiteAcreage.Find(x => x.MineSiteCategoryID == "State" & x.MineSiteTopicID == "Disturbed Surface").ProposedAmount;

            if (BO.MineSiteAcreage.Exists(x => x.MineSiteCategoryID == "Private" & x.MineSiteTopicID == "Disturbed Surface"))
                this.PrivateDisturbedSurface = BO.MineSiteAcreage.Find(x => x.MineSiteCategoryID == "Private" & x.MineSiteTopicID == "Disturbed Surface").ProposedAmount;

            if (BO.MineSiteAcreage.Exists(x => x.MineSiteCategoryID == "County" & x.MineSiteTopicID == "Disturbed Surface"))
                this.CountyDisturbedSurface = BO.MineSiteAcreage.Find(x => x.MineSiteCategoryID == "County" & x.MineSiteTopicID == "Disturbed Surface").ProposedAmount;

            if (BO.MineSiteAcreage.Exists(x => x.MineSiteCategoryID == "Federal" & x.MineSiteTopicID == "Reserved Tonnage"))
                this.FederalReservedTonnage = BO.MineSiteAcreage.Find(x => x.MineSiteCategoryID == "Federal" & x.MineSiteTopicID == "Reserved Tonnage").ProposedAmount;

            if (BO.MineSiteAcreage.Exists(x => x.MineSiteCategoryID == "Tribal" & x.MineSiteTopicID == "Reserved Tonnage"))
                this.TribalReservedTonnage = BO.MineSiteAcreage.Find(x => x.MineSiteCategoryID == "Tribal" & x.MineSiteTopicID == "Reserved Tonnage").ProposedAmount;

            if (BO.MineSiteAcreage.Exists(x => x.MineSiteCategoryID == "State" & x.MineSiteTopicID == "Reserved Tonnage"))
                this.StateReservedTonnage = BO.MineSiteAcreage.Find(x => x.MineSiteCategoryID == "State" & x.MineSiteTopicID == "Reserved Tonnage").ProposedAmount;

            if (BO.MineSiteAcreage.Exists(x => x.MineSiteCategoryID == "Private" & x.MineSiteTopicID == "Reserved Tonnage"))
                this.PrivateReservedTonnage = BO.MineSiteAcreage.Find(x => x.MineSiteCategoryID == "Private" & x.MineSiteTopicID == "Reserved Tonnage").ProposedAmount;

            if (BO.MineSiteAcreage.Exists(x => x.MineSiteCategoryID == "County" & x.MineSiteTopicID == "Reserved Tonnage"))
                this.CountyReservedTonnage = BO.MineSiteAcreage.Find(x => x.MineSiteCategoryID == "County" & x.MineSiteTopicID == "Reserved Tonnage").ProposedAmount;

            SetupMineTypeDropdown();
        }