private bool LateralsCouldBeDeletedInJl(int lateral)
        {
            bool delete = false;

            // Get workId
            int companyId = Int32.Parse(hdfCompanyId.Value);
            int assetId = Int32.Parse(hdfAssetId.Value);
            string workType = hdfWorkType.Value;
            int projectId = Int32.Parse(hdfCurrentProjectId.Value);

            WorkGateway workGateway = new WorkGateway();
            workGateway.LoadByProjectIdAssetIdWorkType(projectId, assetId, workType, companyId);

            int workIdJlLateral = GetWorkId(projectId, lateral, "Junction Lining Lateral", companyId);

            WorkJunctionLiningLateralGateway row = new WorkJunctionLiningLateralGateway();
            row.LoadByWorkId(workIdJlLateral, companyId);

            // All fields are empty for deleting a lateral on jl
            if ((!row.GetPipeLocated(workIdJlLateral).HasValue) && (!row.GetServicesLocated(workIdJlLateral).HasValue) && (!row.GetCoInstalled(workIdJlLateral).HasValue) && (!row.GetBackfilledConcrete(workIdJlLateral).HasValue) && (!row.GetBackfilledSoil(workIdJlLateral).HasValue) && (!row.GetGrouted(workIdJlLateral).HasValue) && (!row.GetCored(workIdJlLateral).HasValue) && (!row.GetPrepped(workIdJlLateral).HasValue) && (!row.GetMeasured(workIdJlLateral).HasValue) && (!row.GetInProcess(workIdJlLateral).HasValue) && (!row.GetInStock(workIdJlLateral).HasValue) && (!row.GetDelivered(workIdJlLateral).HasValue) && (!row.GetPreVideo(workIdJlLateral).HasValue) && (!row.GetLinerInstalled(workIdJlLateral).HasValue) && (!row.GetFinalVideo(workIdJlLateral).HasValue) && (!row.GetVideoInspection(workIdJlLateral).HasValue) && (!row.GetCoCutDown(workIdJlLateral).HasValue) && (!row.GetFinalRestoration(workIdJlLateral).HasValue) && (!row.GetNoticeDelivered(workIdJlLateral).HasValue) && (!row.GetHoldClientIssueResolved(workIdJlLateral).HasValue) && (!row.GetDigRequiredPriorToLiningCompleted(workIdJlLateral).HasValue) && (!row.GetHoldLFSIssueResolved(workIdJlLateral).HasValue) && (!row.GetDigRequiredAfterLiningCompleted(workIdJlLateral).HasValue) && (!row.GetLateralRequiresRoboticPrepCompleted(workIdJlLateral).HasValue))
            {
                if ((!row.GetCoRequired(workIdJlLateral)) && (!row.GetPitRequired(workIdJlLateral)) && (!row.GetLiningThruCo(workIdJlLateral)) && (!row.GetPostContractDigRequired(workIdJlLateral)) && (!row.GetDigRequiredPriorToLining(workIdJlLateral)) && (!row.GetDigRequiredAfterLining(workIdJlLateral)) && (!row.GetOutOfScope(workIdJlLateral)) && (!row.GetHoldClientIssue(workIdJlLateral)) && (!row.GetHoldLFSIssue(workIdJlLateral)) && (!row.GetLateralRequiresRoboticPrep(workIdJlLateral)) && (row.GetLinerSize(workIdJlLateral) == "") && (row.GetFlange(workIdJlLateral) == "") && (row.GetHamiltonInspectionNumber(workIdJlLateral) == "") && (row.GetCoPitLocation(workIdJlLateral) == "") && (row.GetPrepType(workIdJlLateral) == "") && (row.GetGasket(workIdJlLateral) == "") && (row.GetDepthOfLocated(workIdJlLateral) == "") && (row.GetLinerType(workIdJlLateral) == "") && (row.GetVideoLengthToPropertyLine(workIdJlLateral) == ""))
                {
                    if ((row.GetBuildRebuild(workIdJlLateral) == 0) && (row.GetCost(workIdJlLateral) == 0.00m))
                    {
                        delete = true;
                    }
                }
            }

            return delete;
        }
        /// <summary>
        /// UpdateForReport
        /// </summary>
        public void UpdateForReport()
        {
            foreach (JltoBuildReportTDS.JLToBuildRow jlToBuildRow in ((JltoBuildReportTDS.JLToBuildDataTable)Table))
            {
                // Load work
                WorkGateway workGateway = new WorkGateway();
                workGateway.LoadByProjectIdAssetIdWorkType(jlToBuildRow.ProjectID, jlToBuildRow.AssetID, "Junction Lining Lateral", jlToBuildRow.COMPANY_ID);
                int workId = workGateway.GetWorkId(jlToBuildRow.AssetID, "Junction Lining Lateral", jlToBuildRow.ProjectID);

                // Load Laterals in work
                WorkJunctionLiningLateralGateway workJunctionLiningLateralGateway = new WorkJunctionLiningLateralGateway();
                workJunctionLiningLateralGateway.LoadByWorkId(workId, jlToBuildRow.COMPANY_ID);

                // Load original data
                DateTime? originalPipeLocated = workJunctionLiningLateralGateway.GetPipeLocated(workId);
                int sectionWorkId = workJunctionLiningLateralGateway.GetSectionWorkID(workId);
                DateTime? originalServicesLocated = workJunctionLiningLateralGateway.GetServicesLocated(workId);
                DateTime? originalCoInstalled = workJunctionLiningLateralGateway.GetCoInstalled(workId);
                DateTime? originalBackfilledConcrete = workJunctionLiningLateralGateway.GetBackfilledConcrete(workId);
                DateTime? originalBackfilledSoil = workJunctionLiningLateralGateway.GetBackfilledSoil(workId);
                DateTime? originalGrouted = workJunctionLiningLateralGateway.GetGrouted(workId);
                DateTime? originalCored = workJunctionLiningLateralGateway.GetCored(workId);
                DateTime? originalPrepped = workJunctionLiningLateralGateway.GetPrepped(workId);
                DateTime? originalMeasured = workJunctionLiningLateralGateway.GetMeasured(workId);
                string originalLinerSize = workJunctionLiningLateralGateway.GetLinerSize(workId);
                DateTime? originalInProcess = workJunctionLiningLateralGateway.GetInProcess(workId);
                DateTime? originalInStock = workJunctionLiningLateralGateway.GetInStock(workId);
                DateTime? originalDelivered = workJunctionLiningLateralGateway.GetDelivered(workId);
                int? originalBuildRebuild = workJunctionLiningLateralGateway.GetBuildRebuild(workId);
                DateTime? originalPreVideo = workJunctionLiningLateralGateway.GetPreVideo(workId);
                DateTime? originalLinerInstalled = workJunctionLiningLateralGateway.GetLinerInstalled(workId);
                DateTime? originalFinalVideo = workJunctionLiningLateralGateway.GetFinalVideo(workId);
                decimal? originalCost = workJunctionLiningLateralGateway.GetCost(workId);
                DateTime? originalVideoInspection = workJunctionLiningLateralGateway.GetVideoInspection(workId);
                bool originalCoRequired = workJunctionLiningLateralGateway.GetCoRequired(workId);
                bool originalPitRequired = workJunctionLiningLateralGateway.GetPitRequired(workId);
                string originalCoPitLocation = workJunctionLiningLateralGateway.GetCoPitLocation(workId);
                bool originalPostContractDigRequired = workJunctionLiningLateralGateway.GetPostContractDigRequired(workId);
                DateTime? originalCoCutDown = workJunctionLiningLateralGateway.GetCoCutDown(workId);
                DateTime? originalFinalRestoration = workJunctionLiningLateralGateway.GetFinalRestoration(workId);
                string originalVideoLengthToPropertyLine = workJunctionLiningLateralGateway.GetVideoLengthToPropertyLine(workId);
                bool originalLiningThruCo = workJunctionLiningLateralGateway.GetLiningThruCo(workId);
                DateTime? originalNoticeDelivered = workJunctionLiningLateralGateway.GetNoticeDelivered(workId);
                string originalHamiltonInspectionNumber = workJunctionLiningLateralGateway.GetHamiltonInspectionNumber(workId);
                string originalFlange = workJunctionLiningLateralGateway.GetFlange(workId);
                string originalGasket = workJunctionLiningLateralGateway.GetGasket(workId);
                string originalDepthOfLocated = workJunctionLiningLateralGateway.GetDepthOfLocated(workId);
                bool originalDigRequiredPriorToLining = workJunctionLiningLateralGateway.GetDigRequiredPriorToLining(workId);
                DateTime? originalDigRequiredPriorToLiningCompleted = workJunctionLiningLateralGateway.GetDigRequiredPriorToLiningCompleted(workId);
                bool originalDigRequiredAfterLining = workJunctionLiningLateralGateway.GetDigRequiredAfterLining(workId);
                DateTime? originalDigRequiredAfterLiningCompleted = workJunctionLiningLateralGateway.GetDigRequiredAfterLiningCompleted(workId);
                bool originalOutOfScope = workJunctionLiningLateralGateway.GetOutOfScope(workId);
                bool originalHoldClientIssue = workJunctionLiningLateralGateway.GetHoldClientIssue(workId);
                DateTime? originalHoldClientIssueResolved = workJunctionLiningLateralGateway.GetHoldClientIssueResolved(workId);
                bool originalHoldLFSIssue = workJunctionLiningLateralGateway.GetHoldLFSIssue(workId);
                DateTime? originalHoldLFSIssueResolved = workJunctionLiningLateralGateway.GetHoldLFSIssueResolved(workId);
                bool originalRequiresRoboticPrep = workJunctionLiningLateralGateway.GetLateralRequiresRoboticPrep(workId);
                DateTime? originalRequiresRoboticPrepCompleted = workJunctionLiningLateralGateway.GetLateralRequiresRoboticPrepCompleted(workId);
                string originalLinerType = workJunctionLiningLateralGateway.GetLinerType(workId);
                string originalPrepType = workJunctionLiningLateralGateway.GetPrepType(workId);
                bool originalDyeTestReq = workJunctionLiningLateralGateway.GetDyeTestReq(workId);
                DateTime? originalDyeTestComplete = workJunctionLiningLateralGateway.GetDyeTestComplete(workId);
                string originalContractYear = workJunctionLiningLateralGateway.GetContractYear(workId);

                // New data
                DateTime? newPipeLocated = originalPipeLocated;
                DateTime? newServicesLocated = originalServicesLocated;
                DateTime? newCoInstalled = originalCoInstalled;
                DateTime? newBackfilledConcrete = originalBackfilledConcrete;
                DateTime? newBackfilledSoil = originalBackfilledSoil;
                DateTime? newGrouted = originalGrouted;
                DateTime? newCored = originalCored;
                DateTime? newPrepped = originalPrepped;
                DateTime? newMeasured = originalMeasured;
                string newLinerSize = originalLinerSize;
                DateTime? newInProcess = DateTime.Now;
                DateTime? newInStock = originalInStock;
                DateTime? newDelivered = originalDelivered;
                DateTime? newPreVideo = originalPreVideo;
                DateTime? newLinerInstalled = originalLinerInstalled;
                DateTime? newFinalVideo = originalFinalVideo;
                decimal? newCost = originalCost;
                DateTime? newVideoInspection = originalVideoInspection;
                bool newCoRequired = originalCoRequired;
                bool newPitRequired = originalPitRequired;
                string newCoPitLocation = originalCoPitLocation;
                bool newPostContractDigRequired = originalPostContractDigRequired;
                DateTime? newCoCutDown = originalCoCutDown;
                DateTime? newFinalRestoration = originalFinalRestoration;
                int? newBuildRebuild = (int)originalBuildRebuild + 1;
                string newVideoLengthToPropertyLine = originalVideoLengthToPropertyLine;
                bool newLiningThruCo = originalLiningThruCo;
                DateTime? newNoticeDelivered = originalNoticeDelivered;
                string newHamiltonInspectionNumber = originalHamiltonInspectionNumber;
                string newFlange = originalFlange;
                string newGasket = originalGasket;
                string newDepthOfLocated = originalDepthOfLocated;
                bool newDigRequiredPriorToLining = originalDigRequiredPriorToLining;
                DateTime? newDigRequiredPriorToLiningCompleted = originalDigRequiredPriorToLiningCompleted;
                bool newDigRequiredAfterLining = originalDigRequiredAfterLining;
                DateTime? newDigRequiredAfterLiningCompleted = originalDigRequiredAfterLiningCompleted;
                bool newOutOfScope = originalOutOfScope;
                bool newHoldClientIssue = originalHoldClientIssue;
                DateTime? newHoldClientIssueResolved = originalHoldClientIssueResolved;
                bool newHoldLFSIssue = originalHoldLFSIssue;
                DateTime? newHoldLFSIssueResolved = originalHoldLFSIssueResolved;
                bool newRequiresRoboticPrep = originalRequiresRoboticPrep;
                DateTime? newRequiresRoboticPrepCompleted = originalRequiresRoboticPrepCompleted;
                string newLinerType = originalLinerType;
                string newPrepType = originalPrepType;
                bool newDyeTestReq = originalDyeTestReq;
                DateTime? newDyeTestComplete = originalDyeTestComplete;
                string newContractYear = originalContractYear;

                // Update Lateral
                WorkJunctionLiningLateral workJunctionLiningLateral = new WorkJunctionLiningLateral(null);
                workJunctionLiningLateral.UpdateDirect(workId, sectionWorkId, originalPipeLocated, originalServicesLocated, originalCoInstalled, originalBackfilledConcrete, originalBackfilledSoil, originalGrouted, originalCored, originalPrepped, originalMeasured, originalLinerSize, originalInProcess, originalInStock, originalDelivered, originalBuildRebuild, originalPreVideo, originalLinerInstalled, originalFinalVideo, originalCost, originalVideoInspection, originalCoRequired, originalPitRequired, originalCoPitLocation, originalPostContractDigRequired, originalCoCutDown, originalFinalRestoration, false, jlToBuildRow.COMPANY_ID, originalVideoLengthToPropertyLine, originalLiningThruCo, originalNoticeDelivered, originalHamiltonInspectionNumber, originalFlange, originalGasket, originalDepthOfLocated, originalDigRequiredPriorToLining, originalDigRequiredPriorToLiningCompleted, originalDigRequiredAfterLining, originalDigRequiredAfterLiningCompleted, originalOutOfScope, originalHoldClientIssue, originalHoldClientIssueResolved, originalHoldLFSIssue, originalHoldLFSIssueResolved, originalRequiresRoboticPrep, originalRequiresRoboticPrepCompleted, originalLinerType, originalPrepType, originalDyeTestReq, originalDyeTestComplete, newPipeLocated, newServicesLocated, newCoInstalled, newBackfilledConcrete, newBackfilledSoil, newGrouted, newCored, newPrepped, newMeasured, newLinerSize, newInProcess, newInStock, newDelivered, newBuildRebuild, newPreVideo, newLinerInstalled, newFinalVideo, newCost, newVideoInspection, newCoRequired, newPitRequired, newCoPitLocation, newPostContractDigRequired, newCoCutDown, newFinalRestoration, jlToBuildRow.COMPANY_ID, newVideoLengthToPropertyLine, newLiningThruCo, newNoticeDelivered, newHamiltonInspectionNumber, newFlange, newGasket, newDepthOfLocated, newDigRequiredPriorToLining, newDigRequiredPriorToLiningCompleted, newDigRequiredAfterLining, newDigRequiredAfterLiningCompleted, newOutOfScope, newHoldClientIssue, newHoldClientIssueResolved, newHoldLFSIssue, newHoldLFSIssueResolved, newRequiresRoboticPrep, newRequiresRoboticPrepCompleted, newLinerType, newPrepType, newDyeTestReq, newDyeTestComplete, originalContractYear, newContractYear);
            }
        }
        /// <summary>
        /// WorkUpdate
        /// </summary>
        /// <param name="currentProjectId">currentProjectId</param>
        /// <param name="workType">workType</param>
        /// <param name="assetId">assetId</param>
        /// <param name="sectionWorkId">sectionWorkId</param>
        /// <param name="pipeLocated">pipeLocated</param>
        /// <param name="servicesLocated">servicesLocated</param>
        /// <param name="coInstalled">coInstalled</param>
        /// <param name="backfilledConcrete">backfilledConcrete</param>
        /// <param name="backfilledSoil">backfilledSoil</param>
        /// <param name="grouted">grouted</param>
        /// <param name="cored">cored</param>
        /// <param name="prepped">prepped</param>
        /// <param name="measured">measured</param>
        /// <param name="linerSize">linerSize</param>
        /// <param name="inProcess">inProcess</param>
        /// <param name="inStock">inStock</param>
        /// <param name="delivered">delivered</param>
        /// <param name="buildRebuild">buildRebuild</param>
        /// <param name="preVideo">preVideo</param>
        /// <param name="linerInstalled">linerInstalled</param>
        /// <param name="finalVideo">finalVideo</param>
        /// <param name="cost">cost</param>
        /// <param name="videoInspection">videoInspection</param>
        /// <param name="coRequired">coRequired</param>
        /// <param name="pitRequired">pitRequired</param>
        /// <param name="coPitLocation">coPitLocation</param>
        /// <param name="postContractDigRequired">postContractDigRequired</param>
        /// <param name="coCutDown">coCutDown</param>
        /// <param name="finalRestoration">finalRestoration</param>
        /// <param name="deleted">deleted</param>
        /// <param name="companyId">companyId</param>
        /// <param name="videoLengthToPropertyLine">videoLengthToPropertyLine</param>
        /// <param name="liningThruCo">liningThruCo</param>
        /// <param name="noticeDelivered">noticeDelivered</param>
        /// <param name="hamiltonInspectionNumber">hamiltonInspectionNumber</param>
        /// <param name="flange">flange</param>
        /// <param name="gasket">gasket</param>
        /// <param name="depthOfLocated">depthOfLocated</param>
        /// <param name="digRequiredPriorToLining">digRequiredPriorToLining</param>
        /// <param name="digRequiredPriorToLiningCompleted">digRequiredPriorToLiningCompleted</param>
        /// <param name="digRequiredAfterLining">digRequiredAfterLining</param>
        /// <param name="digRequiredAfterLiningCompleted">digRequiredAfterLiningCompleted</param>
        /// <param name="outOfScope">outOfScope</param>
        /// <param name="holdClientIssue">holdClientIssue</param>
        /// <param name="holdClientIssueResolved">holdClientIssueResolved</param>
        /// <param name="holdLFSIssue">holdLFSIssue</param>
        /// <param name="holdLFSIssueResolved">holdLFSIssueResolved</param>
        /// <param name="requiresRoboticPrep">requiresRoboticPrep</param>
        /// <param name="requiresRoboticPrepCompleted">requiresRoboticPrepCompleted</param>
        /// <param name="linerType">linerType</param>
        /// <param name="prepType">prepType</param>
        /// <param name="dyeTestReq">dyeTestReq</param>
        /// <param name="dyeTestComplete">dyeTestComplete</param>
        private void WorkUpdate(int currentProjectId, int assetId, int sectionWorkId, DateTime? pipeLocated, DateTime? servicesLocated, DateTime? coInstalled, DateTime? backfilledConcrete, DateTime? backfilledSoil, DateTime? grouted, DateTime? cored, DateTime? prepped, DateTime? measured, string linerSize, DateTime? inProcess, DateTime? inStock, DateTime? delivered, int? buildRebuild, DateTime? preVideo, DateTime? linerInstalled, DateTime? finalVideo, decimal? cost, DateTime? videoInspection, bool coRequired, bool pitRequired, string coPitLocation, bool postContractDigRequired, DateTime? coCutDown, DateTime? finalRestoration, bool deleted, int companyId, string videoLengthToPropertyLine, bool liningThruCo, DateTime? noticeDelivered, string hamiltonInspectionNumber, string flange, string gasket, string depthOfLocated, bool digRequiredPriorToLining, DateTime? digRequiredPriorToLiningCompleted, bool digRequiredAfterLining, DateTime? digRequiredAfterLiningCompleted, bool outOfScope, bool holdClientIssue, DateTime? holdClientIssueResolved, bool holdLFSIssue, DateTime? holdLFSIssueResolved, bool requiresRoboticPrep, DateTime? requiresRoboticPrepCompleted, string linerType, string prepType, bool dyeTestReq, DateTime? dyeTestComplete, string contractYear)
        {
            // Load work id
            WorkGateway workGateway = new WorkGateway();
            workGateway.LoadByProjectIdAssetIdWorkType(currentProjectId, assetId, "Junction Lining Lateral", companyId);
            int workId = workGateway.GetWorkId(assetId, "Junction Lining Lateral", currentProjectId);

            WorkJunctionLiningLateralGateway workJunctionLiningLateralGateway = new WorkJunctionLiningLateralGateway();
            workJunctionLiningLateralGateway.LoadByWorkId(workId, companyId);

            // Load original data
            DateTime? originalPipeLocated = workJunctionLiningLateralGateway.GetPipeLocated(workId);
            DateTime? originalServicesLocated = workJunctionLiningLateralGateway.GetServicesLocated(workId);
            DateTime? originalCoInstalled = workJunctionLiningLateralGateway.GetCoInstalled(workId);
            DateTime? originalBackfilledConcrete = workJunctionLiningLateralGateway.GetBackfilledConcrete(workId);
            DateTime? originalBackfilledSoil = workJunctionLiningLateralGateway.GetBackfilledSoil(workId);
            DateTime? originalGrouted = workJunctionLiningLateralGateway.GetGrouted(workId);
            DateTime? originalCored = workJunctionLiningLateralGateway.GetCored(workId);
            DateTime? originalPrepped = workJunctionLiningLateralGateway.GetPrepped(workId);
            DateTime? originalMeasured = workJunctionLiningLateralGateway.GetMeasured(workId);
            string originalLinerSize = workJunctionLiningLateralGateway.GetLinerSize(workId);
            DateTime? originalInProcess = workJunctionLiningLateralGateway.GetInProcess(workId);
            DateTime? originalInStock = workJunctionLiningLateralGateway.GetInStock(workId);
            DateTime? originalDelivered = workJunctionLiningLateralGateway.GetDelivered(workId);
            int? originalBuildRebuild = workJunctionLiningLateralGateway.GetBuildRebuild(workId);
            DateTime? originalPreVideo = workJunctionLiningLateralGateway.GetPreVideo(workId);
            DateTime? originalLinerInstalled = workJunctionLiningLateralGateway.GetLinerInstalled(workId);
            DateTime? originalFinalVideo = workJunctionLiningLateralGateway.GetFinalVideo(workId);
            decimal? originalCost = workJunctionLiningLateralGateway.GetCost(workId);
            DateTime? originalVideoInspection = workJunctionLiningLateralGateway.GetVideoInspection(workId);
            bool originalCoRequired = workJunctionLiningLateralGateway.GetCoRequired(workId);
            bool originalPitRequired = workJunctionLiningLateralGateway.GetPitRequired(workId);
            string originalCoPitLocation = workJunctionLiningLateralGateway.GetCoPitLocation(workId);
            bool originalPostContractDigRequired = workJunctionLiningLateralGateway.GetPostContractDigRequired(workId);
            DateTime? originalCoCutDown = workJunctionLiningLateralGateway.GetCoCutDown(workId);
            DateTime? originalFinalRestoration = workJunctionLiningLateralGateway.GetFinalRestoration(workId);
            string originalVideoLengthToPropertyLine = workJunctionLiningLateralGateway.GetVideoLengthToPropertyLine(workId);
            bool originalLiningThruCo = workJunctionLiningLateralGateway.GetLiningThruCo(workId);
            DateTime? originalNoticeDelivered = workJunctionLiningLateralGateway.GetNoticeDelivered(workId);
            string originalHamiltonInspectionNumber = workJunctionLiningLateralGateway.GetHamiltonInspectionNumber(workId);
            string originalFlange = workJunctionLiningLateralGateway.GetFlange(workId);
            string originalGasket = workJunctionLiningLateralGateway.GetGasket(workId);
            string originalDepthOfLocated = workJunctionLiningLateralGateway.GetDepthOfLocated(workId);
            bool originalDigRequiredPriorToLining = workJunctionLiningLateralGateway.GetDigRequiredPriorToLining(workId);
            DateTime? originalDigRequiredPriorToLiningCompleted = workJunctionLiningLateralGateway.GetDigRequiredPriorToLiningCompleted(workId);
            bool originalDigRequiredAfterLining = workJunctionLiningLateralGateway.GetDigRequiredAfterLining(workId);
            DateTime? originalDigRequiredAfterLiningCompleted = workJunctionLiningLateralGateway.GetDigRequiredAfterLiningCompleted(workId);
            bool originalOutOfScope = workJunctionLiningLateralGateway.GetOutOfScope(workId);
            bool originalHoldClientIssue = workJunctionLiningLateralGateway.GetHoldClientIssue(workId);
            DateTime? originalHoldClientIssueResolved = workJunctionLiningLateralGateway.GetHoldClientIssueResolved(workId);
            bool originalHoldLFSIssue = workJunctionLiningLateralGateway.GetHoldLFSIssue(workId);
            DateTime? originalHoldLFSIssueResolved = workJunctionLiningLateralGateway.GetHoldLFSIssueResolved(workId);
            bool originalRequiresRoboticPrep = workJunctionLiningLateralGateway.GetLateralRequiresRoboticPrep(workId);
            DateTime? originalRequiresRoboticPrepCompleted = workJunctionLiningLateralGateway.GetLateralRequiresRoboticPrepCompleted(workId);
            string originalLinerType = workJunctionLiningLateralGateway.GetLinerType(workId);
            string originalPrepType = workJunctionLiningLateralGateway.GetPrepType(workId);
            bool originalDyeTestReq = workJunctionLiningLateralGateway.GetDyeTestReq(workId);
            DateTime? originalDyeTestComplete = null; if (workJunctionLiningLateralGateway.GetDyeTestComplete(workId).HasValue) originalDyeTestComplete = workJunctionLiningLateralGateway.GetDyeTestComplete(workId);
            string originalContractYear = workJunctionLiningLateralGateway.GetContractYear(workId);

            // New data
            DateTime? newPipeLocated = pipeLocated;
            DateTime? newServicesLocated = servicesLocated;
            DateTime? newCoInstalled = coInstalled;
            DateTime? newBackfilledConcrete = backfilledConcrete;
            DateTime? newBackfilledSoil = backfilledSoil;
            DateTime? newGrouted = grouted;
            DateTime? newCored = cored;
            DateTime? newPrepped = prepped;
            DateTime? newMeasured = measured;
            string newLinerSize = linerSize;
            DateTime? newInProcess = inProcess;
            DateTime? newInStock = inStock;
            DateTime? newDelivered = delivered;
            int? newBuildRebuild = buildRebuild;
            DateTime? newPreVideo = preVideo;
            DateTime? newLinerInstalled = linerInstalled;
            DateTime? newFinalVideo = finalVideo;
            decimal? newCost = cost;
            DateTime? newVideoInspection = videoInspection;
            bool newCoRequired = coRequired;
            bool newPitRequired = pitRequired;
            string newCoPitLocation = coPitLocation;
            bool newPostContractDigRequired = postContractDigRequired;
            DateTime? newCoCutDown = coCutDown;
            DateTime? newFinalRestoration = finalRestoration;
            string newVideoLengthToPropertyLine = videoLengthToPropertyLine;
            bool newLiningThruCo = liningThruCo;
            DateTime? newNoticeDelivered = noticeDelivered;
            string newHamiltonInspectionNumber = hamiltonInspectionNumber;
            string newFlange = flange;
            string newGasket = gasket;
            string newDepthOfLocated = depthOfLocated;
            bool newDigRequiredPriorToLining = digRequiredPriorToLining;
            DateTime? newDigRequiredPriorToLiningCompleted = digRequiredPriorToLiningCompleted;
            bool newDigRequiredAfterLining = digRequiredAfterLining;
            DateTime? newDigRequiredAfterLiningCompleted = digRequiredAfterLiningCompleted;
            bool newOutOfScope = outOfScope;
            bool newHoldClientIssue = holdClientIssue;
            DateTime? newHoldClientIssueResolved = holdClientIssueResolved;
            bool newHoldLFSIssue = holdLFSIssue;
            DateTime? newHoldLFSIssueResolved = holdLFSIssueResolved;
            bool newRequiresRoboticPrep = requiresRoboticPrep;
            DateTime? newRequiresRoboticPrepCompleted = requiresRoboticPrepCompleted;
            string newLinerType = linerType;
            string newPrepType = prepType;
            bool newDyeTestReq = dyeTestReq;
            DateTime? newDyeTestComplete = null; if (dyeTestComplete.HasValue) newDyeTestComplete = dyeTestComplete;
            string newContractYear = contractYear;

            // Update work
            WorkJunctionLiningLateral workJunctionLiningLateral = new WorkJunctionLiningLateral(null);
            workJunctionLiningLateral.UpdateDirect(workId, sectionWorkId, originalPipeLocated, originalServicesLocated, originalCoInstalled, originalBackfilledConcrete, originalBackfilledSoil, originalGrouted, originalCored, originalPrepped, originalMeasured, originalLinerSize, originalInProcess, originalInStock, originalDelivered, originalBuildRebuild, originalPreVideo, originalLinerInstalled, originalFinalVideo, originalCost, originalVideoInspection, originalCoRequired, originalPitRequired, originalCoPitLocation, originalPostContractDigRequired, originalCoCutDown, originalFinalRestoration, false, companyId, originalVideoLengthToPropertyLine, originalLiningThruCo, originalNoticeDelivered, originalHamiltonInspectionNumber, originalFlange, originalGasket, originalDepthOfLocated, originalDigRequiredPriorToLining, originalDigRequiredPriorToLiningCompleted, originalDigRequiredAfterLining, originalDigRequiredAfterLiningCompleted, originalOutOfScope, originalHoldClientIssue, originalHoldClientIssueResolved, originalHoldLFSIssue, originalHoldLFSIssueResolved, originalRequiresRoboticPrep, originalRequiresRoboticPrepCompleted, originalLinerType, originalPrepType, originalDyeTestReq, originalDyeTestComplete, newPipeLocated, newServicesLocated, newCoInstalled, newBackfilledConcrete, newBackfilledSoil, newGrouted, newCored, newPrepped, newMeasured, newLinerSize, newInProcess, newInStock, newDelivered, newBuildRebuild, newPreVideo, newLinerInstalled, newFinalVideo, newCost, newVideoInspection, newCoRequired, newPitRequired, newCoPitLocation, newPostContractDigRequired, newCoCutDown, newFinalRestoration, companyId, newVideoLengthToPropertyLine, newLiningThruCo, newNoticeDelivered, newHamiltonInspectionNumber, newFlange, newGasket, newDepthOfLocated, newDigRequiredPriorToLining, newDigRequiredPriorToLiningCompleted, newDigRequiredAfterLining, newDigRequiredAfterLiningCompleted, newOutOfScope, newHoldClientIssue, newHoldClientIssueResolved, newHoldLFSIssue, newHoldLFSIssueResolved, newRequiresRoboticPrep, newRequiresRoboticPrepCompleted, newLinerType, newPrepType, newDyeTestReq, newDyeTestComplete, originalContractYear, newContractYear);
        }
        /// <summary>
        /// UpdateJLLaterals
        /// </summary>
        /// <param name="currentProjectId">currentProjectId</param>
        /// <param name="lateral_assetId">lateral_assetId</param>
        /// <param name="companyId">companyId</param>        
        /// <param name="clientInspectionNo">clientInspectionNo</param>
        /// <param name="requiresRoboticPrep">requiresRoboticPrep</param>
        /// <param name="requiresRoboticPrepDate">requiresRoboticPrepDate</param>
        /// <param name="holdClientIssue">holdClientIssue</param>
        /// <param name="holdLFSIssue">holdLFSIssue</param>
        /// <param name="flange">flange</param>
        /// <param name="dyeTestReq">dyeTestReq</param>
        /// <param name="dyeTestComplete">dyeTestComplete</param>
        private void UpdateJLLaterals(int currentProjectId, int lateral_assetId, int companyId, string clientInspectionNo, bool requiresRoboticPrep, DateTime? requiresRoboticPrepDate, bool holdClientIssue, bool holdLFSIssue, string flange, bool dyeTestReq, DateTime? dyeTestComplete, string contractYear)
        {
            // Load work id
            WorkGateway workGateway = new WorkGateway();
            workGateway.LoadByProjectIdAssetIdWorkType(currentProjectId, lateral_assetId, "Junction Lining Lateral", companyId);
            if (workGateway.Table.Rows.Count > 0)
            {
                int workId = workGateway.GetWorkId(lateral_assetId, "Junction Lining Lateral", currentProjectId);

                if (workId > 0)
                {
                    WorkJunctionLiningLateralGateway workJunctionLiningLateralGateway = new WorkJunctionLiningLateralGateway();
                    workJunctionLiningLateralGateway.LoadByWorkId(workId, companyId);

                    // Load original data
                    int originalSectionWorkId = workJunctionLiningLateralGateway.GetSectionWorkID(workId);
                    DateTime? originalPipeLocated = workJunctionLiningLateralGateway.GetPipeLocated(workId);
                    DateTime? originalServicesLocated = workJunctionLiningLateralGateway.GetServicesLocated(workId);
                    DateTime? originalCoInstalled = workJunctionLiningLateralGateway.GetCoInstalled(workId);
                    DateTime? originalBackfilledConcrete = workJunctionLiningLateralGateway.GetBackfilledConcrete(workId);
                    DateTime? originalBackfilledSoil = workJunctionLiningLateralGateway.GetBackfilledSoil(workId);
                    DateTime? originalGrouted = workJunctionLiningLateralGateway.GetGrouted(workId);
                    DateTime? originalCored = workJunctionLiningLateralGateway.GetCored(workId);
                    DateTime? originalPrepped = workJunctionLiningLateralGateway.GetPrepped(workId);
                    DateTime? originalMeasured = workJunctionLiningLateralGateway.GetMeasured(workId);
                    string originalLinerSize = workJunctionLiningLateralGateway.GetLinerSize(workId);
                    DateTime? originalInProcess = workJunctionLiningLateralGateway.GetInProcess(workId);
                    DateTime? originalInStock = workJunctionLiningLateralGateway.GetInStock(workId);
                    DateTime? originalDelivered = workJunctionLiningLateralGateway.GetDelivered(workId);
                    int? originalBuildRebuild = workJunctionLiningLateralGateway.GetBuildRebuild(workId);
                    DateTime? originalPreVideo = workJunctionLiningLateralGateway.GetPreVideo(workId);
                    DateTime? originalLinerInstalled = workJunctionLiningLateralGateway.GetLinerInstalled(workId);
                    DateTime? originalFinalVideo = workJunctionLiningLateralGateway.GetFinalVideo(workId);
                    decimal? originalCost = workJunctionLiningLateralGateway.GetCost(workId);
                    DateTime? originalVideoInspection = workJunctionLiningLateralGateway.GetVideoInspection(workId);
                    bool originalCoRequired = workJunctionLiningLateralGateway.GetCoRequired(workId);
                    bool originalPitRequired = workJunctionLiningLateralGateway.GetPitRequired(workId);
                    string originalCoPitLocation = workJunctionLiningLateralGateway.GetCoPitLocation(workId);
                    bool originalPostContractDigRequired = workJunctionLiningLateralGateway.GetPostContractDigRequired(workId);
                    DateTime? originalCoCutDown = workJunctionLiningLateralGateway.GetCoCutDown(workId);
                    DateTime? originalFinalRestoration = workJunctionLiningLateralGateway.GetFinalRestoration(workId);
                    string originalVideoLengthToPropertyLine = workJunctionLiningLateralGateway.GetVideoLengthToPropertyLine(workId);
                    bool originalLiningThruCo = workJunctionLiningLateralGateway.GetLiningThruCo(workId);
                    DateTime? originalNoticeDelivered = workJunctionLiningLateralGateway.GetNoticeDelivered(workId);
                    string originalHamiltonInspectionNumber = workJunctionLiningLateralGateway.GetHamiltonInspectionNumber(workId);
                    string originalFlange = workJunctionLiningLateralGateway.GetFlange(workId);
                    string originalGasket = workJunctionLiningLateralGateway.GetGasket(workId);
                    string originalDepthOfLocated = workJunctionLiningLateralGateway.GetDepthOfLocated(workId);
                    bool originalDigRequiredPriorToLining = workJunctionLiningLateralGateway.GetDigRequiredPriorToLining(workId);
                    DateTime? originalDigRequiredPriorToLiningCompleted = workJunctionLiningLateralGateway.GetDigRequiredPriorToLiningCompleted(workId);
                    bool originalDigRequiredAfterLining = workJunctionLiningLateralGateway.GetDigRequiredAfterLining(workId);
                    DateTime? originalDigRequiredAfterLiningCompleted = workJunctionLiningLateralGateway.GetDigRequiredAfterLiningCompleted(workId);
                    bool originalOutOfScope = workJunctionLiningLateralGateway.GetOutOfScope(workId);
                    bool originalHoldClientIssue = workJunctionLiningLateralGateway.GetHoldClientIssue(workId);
                    DateTime? originalHoldClientIssueResolved = workJunctionLiningLateralGateway.GetHoldClientIssueResolved(workId);
                    bool originalHoldLFSIssue = workJunctionLiningLateralGateway.GetHoldLFSIssue(workId);
                    DateTime? originalHoldLFSIssueResolved = workJunctionLiningLateralGateway.GetHoldLFSIssueResolved(workId);
                    bool originalRequiresRoboticPrep = workJunctionLiningLateralGateway.GetLateralRequiresRoboticPrep(workId);
                    DateTime? originalRequiresRoboticPrepCompleted = workJunctionLiningLateralGateway.GetLateralRequiresRoboticPrepCompleted(workId);
                    string originalLinerType = workJunctionLiningLateralGateway.GetLinerType(workId);
                    string originalPrepType = workJunctionLiningLateralGateway.GetPrepType(workId);
                    bool originalDyeTestReq = workJunctionLiningLateralGateway.GetDyeTestReq(workId);
                    DateTime? originalDyeTestComplete = null; if (workJunctionLiningLateralGateway.GetDyeTestComplete(workId).HasValue) originalDyeTestComplete = workJunctionLiningLateralGateway.GetDyeTestComplete(workId);
                    string originalContractYear = workJunctionLiningLateralGateway.GetContractYear(workId);

                    // New data
                    string newClientInspectionNo = clientInspectionNo;
                    bool newRequiresRoboticPrep = requiresRoboticPrep;
                    DateTime? newRequiresRoboticPrepCompleted = null; if (requiresRoboticPrepDate.HasValue) newRequiresRoboticPrepCompleted = requiresRoboticPrepDate;
                    bool newHoldClientIssue = holdClientIssue;
                    bool newHoldLFSIssue = holdLFSIssue;
                    bool newDyeTetRepair = dyeTestReq;
                    DateTime? newDyeTestComplete = null; if (dyeTestComplete.HasValue) newDyeTestComplete = dyeTestComplete;
                    string newContractYear = contractYear;

                    // Update work
                    WorkJunctionLiningLateral workJunctionLiningLateral = new WorkJunctionLiningLateral(null);
                    workJunctionLiningLateral.UpdateDirect(workId, originalSectionWorkId, originalPipeLocated, originalServicesLocated, originalCoInstalled, originalBackfilledConcrete, originalBackfilledSoil, originalGrouted, originalCored, originalPrepped, originalMeasured, originalLinerSize, originalInProcess, originalInStock, originalDelivered, originalBuildRebuild, originalPreVideo, originalLinerInstalled, originalFinalVideo, originalCost, originalVideoInspection, originalCoRequired, originalPitRequired, originalCoPitLocation, originalPostContractDigRequired, originalCoCutDown, originalFinalRestoration, false, companyId, originalVideoLengthToPropertyLine, originalLiningThruCo, originalNoticeDelivered, originalHamiltonInspectionNumber, originalFlange, originalGasket, originalDepthOfLocated, originalDigRequiredPriorToLining, originalDigRequiredPriorToLiningCompleted, originalDigRequiredAfterLining, originalDigRequiredAfterLiningCompleted, originalOutOfScope, originalHoldClientIssue, originalHoldClientIssueResolved, originalHoldLFSIssue, originalHoldLFSIssueResolved, originalRequiresRoboticPrep, originalRequiresRoboticPrepCompleted, originalLinerType, originalPrepType, originalDyeTestReq, originalDyeTestComplete, originalPipeLocated, originalServicesLocated, originalCoInstalled, originalBackfilledConcrete, originalBackfilledSoil, originalGrouted, originalCored, originalPrepped, originalMeasured, originalLinerSize, originalInProcess, originalInStock, originalDelivered, originalBuildRebuild, originalPreVideo, originalLinerInstalled, originalFinalVideo, originalCost, originalVideoInspection, originalCoRequired, originalPitRequired, originalCoPitLocation, originalPostContractDigRequired, originalCoCutDown, originalFinalRestoration, companyId, originalVideoLengthToPropertyLine, originalLiningThruCo, originalNoticeDelivered, newClientInspectionNo, flange, originalGasket, originalDepthOfLocated, originalDigRequiredPriorToLining, originalDigRequiredPriorToLiningCompleted, originalDigRequiredAfterLining, originalDigRequiredAfterLiningCompleted, originalOutOfScope, newHoldClientIssue, originalHoldClientIssueResolved,  newHoldLFSIssue, originalHoldLFSIssueResolved, newRequiresRoboticPrep, newRequiresRoboticPrepCompleted, originalLinerType, originalPrepType, newDyeTetRepair, newDyeTestComplete, originalContractYear, newContractYear);
                }
            }
        }
        /// <summary>
        /// UpdateForReportForJunctionLining
        /// </summary>
        /// <param name="assetId">assetId</param>
        /// <param name="workId">workId</param>
        /// <param name="projectId">projectId</param>        
        /// <param name="measuredFrom">measuredFrom</param>
        /// /// <param name="companyId">companyId</param>
        private int UpdateForReportForJunctionLining(int assetId, int workId, int projectId, string measuredFrom, int companyId)
        {
            int lateralsTot = 0;

            foreach (LateralLocationSheetReportTDS.LateralLocationSheetRow row in (LateralLocationSheetReportTDS.LateralLocationSheetDataTable)Table)
            {
                if (row.AssetID == assetId)
                {
                    int lateralNumber = 0;

                    LateralLocationSheetLateralDetailsReport lateralLocationSheetLateralDetailsReportSorted;

                    LateralLocationSheetLateralDetailsReport lateralLocationSheetLateralDetailsReport = new LateralLocationSheetLateralDetailsReport();
                    lateralLocationSheetLateralDetailsReport.LoadBySectionIdWorkIdProjectId(assetId, workId, projectId, companyId);
                    lateralsTot = lateralLocationSheetLateralDetailsReport.Table.Rows.Count;

                    if (lateralLocationSheetLateralDetailsReport.Table.Rows.Count > 0)
                    {
                        int totalLaterals = 0;
                        totalLaterals = lateralLocationSheetLateralDetailsReport.Table.Rows.Count;
                        decimal div;
                        decimal interval;

                        if (totalLaterals > 26)
                        {
                            interval = 1;
                        }
                        else
                        {
                            div = 26 / totalLaterals;
                            interval = Math.Truncate(div);
                        }

                        lateralLocationSheetLateralDetailsReportSorted = Sort(lateralLocationSheetLateralDetailsReport, measuredFrom);

                        foreach (LateralLocationSheetReportTDS.LateralLocationSheetLateralDetailsRow lateralRow in (LateralLocationSheetReportTDS.LateralLocationSheetLateralDetailsDataTable)lateralLocationSheetLateralDetailsReportSorted.Table)
                        {
                            lateralNumber = lateralNumber + (int)interval;

                            if (totalLaterals == 1)
                            {
                                lateralNumber = 13;
                            }

                            // Determine position
                            string clock = ""; if (!lateralRow.IsClockPositionNull()) clock = lateralRow.ClockPosition;
                            string clockPosition = "N";
                            Distance d;
                            string distance = "";

                            if (measuredFrom == "DSMH")
                            {
                                clockPosition = "S";

                                if (clock != "")
                                {
                                    if (clock == "1" || clock == "1:00" || clock == "01:00" || clock == "2" || clock == "2:00" || clock == "02:00" || clock == "3" || clock == "3:00" || clock == "03:00" || clock == "4" || clock == "4:00" || clock == "04:00" || clock == "5" || clock == "5:00" || clock == "05:00" || clock == "6" && clock != "6:00" && clock != "06:00")
                                    {
                                        clockPosition = "N";
                                    }
                                }

                                if (!lateralRow.IsReverseSetupNull()) d = new Distance(lateralRow.ReverseSetup); else d = new Distance();
                                distance = (!lateralRow.IsReverseSetupNull()) ? d.ToStringInMet3() + "/" + ((decimal)Math.Round(d.ToDoubleInEng3(), 1)).ToString() + "ft  " : "Distance not defined.  ";
                            }
                            else
                            {
                                clockPosition = "N";

                                if (clock != "")
                                {
                                    if (clock == "1" || clock == "1:00" || clock == "01:00" || clock == "2" || clock == "2:00" || clock == "02:00" || clock == "3" || clock == "3:00" || clock == "03:00" || clock == "4" || clock == "4:00" || clock == "04:00" || clock == "5" || clock == "5:00" || clock == "05:00" || clock == "6" && clock != "6:00" && clock != "06:00")
                                    {
                                        clockPosition = "S";
                                    }
                                }

                                if (!lateralRow.IsVideoDistanceNull()) d = new Distance(lateralRow.VideoDistance); else d = new Distance();
                                distance = (!lateralRow.IsVideoDistanceNull()) ? d.ToStringInMet3() + "/" + ((decimal)Math.Round(d.ToDoubleInEng3(), 1)).ToString() + "ft  " : "Distance not defined.  ";
                            }

                            // Determine address
                            string address = ""; if (!lateralRow.IsAddressNull()) address = lateralRow.Address;
                            string connection = "";
                            string connectionType = ""; if (!lateralRow.IsConnectionTypeNull()) connectionType = lateralRow.ConnectionType;
                            if (connectionType != "")
                            {
                                connection += " (" + connectionType + ")    ";
                            }
                            else
                            {
                                connection += "    ";
                            }

                            // Determine state
                            string state = ""; if (!lateralRow.IsStateNull())
                            {
                                if (lateralRow.State == "Visibly Plugged")
                                {
                                    state = "- VP ";
                                }
                                else
                                {
                                    state = "- " + lateralRow.State + "  ";
                                }
                            }

                            // Determine color, flange and out of scope
                            DateTime? linerInstalled = null;
                            string flange = "";
                            bool outOfScope = false;

                            int workIdJl = GetWorkId(projectId, lateralRow.AssetID, "Junction Lining Lateral", companyId);
                            if (workIdJl > 0)
                            {
                                WorkJunctionLiningLateralGateway workJunctionLiningLateralGateway = new WorkJunctionLiningLateralGateway();
                                workJunctionLiningLateralGateway.LoadByWorkId(workIdJl, companyId);
                                linerInstalled = workJunctionLiningLateralGateway.GetLinerInstalled(workIdJl);
                                flange = workJunctionLiningLateralGateway.GetFlange(workIdJl);
                                outOfScope = workJunctionLiningLateralGateway.GetOutOfScope(workIdJl);
                            }

                            string color = "";

                            if (linerInstalled.HasValue)
                            {
                                color = "blue";
                            }
                            else
                            {
                                if (outOfScope)
                                {
                                    color = "red";
                                }
                                else
                                {
                                    if (lateralRow.LineLateral)
                                    {
                                        color = "green";
                                    }
                                    else
                                    {
                                        if ((!lateralRow.IsStateNull()) && (lateralRow.State == "Visibly Plugged") || (!lateralRow.LineLateral))
                                        {
                                            color = "red";
                                        }
                                    }
                                }
                            }

                            // Set distance
                            if ((distance == "0.00m/0ft") && (flange == "MH Shot"))
                            {
                                distance = " " + connection + distance + "MH Shot  " + state + "  ";
                            }
                            else
                            {
                                distance = " " + connection + distance + state + "  ";
                            }

                            // Set values
                            switch (lateralNumber)
                            {
                                case 1:
                                    row.ID1 = lateralRow.LateralID;
                                    row.A1 = address;
                                    row.D1 = distance;
                                    row.CP1 = clockPosition;
                                    row.C1 = color;
                                    break;

                                case 2:
                                    row.ID2 = lateralRow.LateralID;
                                    row.A2 = address;
                                    row.D2 = distance;
                                    row.CP2 = clockPosition;
                                    row.C2 = color;
                                    break;

                                case 3:
                                    row.ID3 = lateralRow.LateralID;
                                    row.A3 = address;
                                    row.D3 = distance;
                                    row.CP3 = clockPosition;
                                    row.C3 = color;
                                    break;

                                case 4:
                                    row.ID4 = lateralRow.LateralID;
                                    row.A4 = address;
                                    row.D4 = distance;
                                    row.CP4 = clockPosition;
                                    row.C4 = color;
                                    break;

                                case 5:
                                    row.ID5 = lateralRow.LateralID;
                                    row.A5 = address;
                                    row.D5 = distance;
                                    row.CP5 = clockPosition;
                                    row.C5 = color;
                                    break;

                                case 6:
                                    row.ID6 = lateralRow.LateralID;
                                    row.A6 = address;
                                    row.D6 = distance;
                                    row.CP6 = clockPosition;
                                    row.C6 = color;
                                    break;

                                case 7:
                                    row.ID7 = lateralRow.LateralID;
                                    row.A7 = address;
                                    row.D7 = distance;
                                    row.CP7 = clockPosition;
                                    row.C7 = color;
                                    break;

                                case 8:
                                    row.ID8 = lateralRow.LateralID;
                                    row.A8 = address;
                                    row.D8 = distance;
                                    row.CP8 = clockPosition;
                                    row.C8 = color;
                                    break;

                                case 9:
                                    row.ID9 = lateralRow.LateralID;
                                    row.A9 = address;
                                    row.D9 = distance;
                                    row.CP9 = clockPosition;
                                    row.C9 = color;
                                    break;

                                case 10:
                                    row.ID10 = lateralRow.LateralID;
                                    row.A10 = address;
                                    row.D10 = distance;
                                    row.CP10 = clockPosition;
                                    row.C10 = color;
                                    break;

                                case 11:
                                    row.ID11 = lateralRow.LateralID;
                                    row.A11 = address;
                                    row.D11 = distance;
                                    row.CP11 = clockPosition;
                                    row.C11 = color;
                                    break;

                                case 12:
                                    row.ID12 = lateralRow.LateralID;
                                    row.A12 = address;
                                    row.D12 = distance;
                                    row.CP12 = clockPosition;
                                    row.C12 = color;
                                    break;

                                case 13:
                                    row.ID13 = lateralRow.LateralID;
                                    row.A13 = address;
                                    row.D13 = distance;
                                    row.CP13 = clockPosition;
                                    row.C13 = color;
                                    break;

                                case 14:
                                    row.ID14 = lateralRow.LateralID;
                                    row.A14 = address;
                                    row.D14 = distance;
                                    row.CP14 = clockPosition;
                                    row.C14 = color;
                                    break;

                                case 15:
                                    row.ID15 = lateralRow.LateralID;
                                    row.A15 = address;
                                    row.D15 = distance;
                                    row.CP15 = clockPosition;
                                    row.C15 = color;
                                    break;

                                case 16:
                                    row.ID16 = lateralRow.LateralID;
                                    row.A16 = address;
                                    row.D16 = distance;
                                    row.CP16 = clockPosition;
                                    row.C16 = color;
                                    break;

                                case 17:
                                    row.ID17 = lateralRow.LateralID;
                                    row.A17 = address;
                                    row.D17 = distance;
                                    row.CP17 = clockPosition;
                                    row.C17 = color;
                                    break;

                                case 18:
                                    row.ID18 = lateralRow.LateralID;
                                    row.A18 = address;
                                    row.D18 = distance;
                                    row.CP18 = clockPosition;
                                    row.C18 = color;
                                    break;

                                case 19:
                                    row.ID19 = lateralRow.LateralID;
                                    row.A19 = address;
                                    row.D19 = distance;
                                    row.CP19 = clockPosition;
                                    row.C19 = color;
                                    break;

                                case 20:
                                    row.ID20 = lateralRow.LateralID;
                                    row.A20 = address;
                                    row.D20 = distance;
                                    row.CP20 = clockPosition;
                                    row.C20 = color;
                                    break;

                                case 21:
                                    row.ID21 = lateralRow.LateralID;
                                    row.A21 = address;
                                    row.D21 = distance;
                                    row.CP21 = clockPosition;
                                    row.C21 = color;
                                    break;

                                case 22:
                                    row.ID22 = lateralRow.LateralID;
                                    row.A22 = address;
                                    row.D22 = distance;
                                    row.CP22 = clockPosition;
                                    row.C22 = color;
                                    break;

                                case 23:
                                    row.ID23 = lateralRow.LateralID;
                                    row.A23 = address;
                                    row.D23 = distance;
                                    row.CP23 = clockPosition;
                                    row.C23 = color;
                                    break;

                                case 24:
                                    row.ID24 = lateralRow.LateralID;
                                    row.A24 = address;
                                    row.D24 = distance;
                                    row.CP24 = clockPosition;
                                    row.C24 = color;
                                    break;

                                case 25:
                                    row.ID25 = lateralRow.LateralID;
                                    row.A25 = address;
                                    row.D25 = distance;
                                    row.CP25 = clockPosition;
                                    row.C25 = color;
                                    break;

                                case 26:
                                    row.ID26 = lateralRow.LateralID;
                                    row.A26 = address;
                                    row.D26 = distance;
                                    row.CP26 = clockPosition;
                                    row.C26 = color;
                                    break;

                                case 27:
                                    row.ID27 = lateralRow.LateralID;
                                    row.A27 = address;
                                    row.D27 = distance;
                                    row.CP27 = clockPosition;
                                    row.C27 = color;
                                    break;

                                case 28:
                                    row.ID28 = lateralRow.LateralID;
                                    row.A28 = address;
                                    row.D28 = distance;
                                    row.CP28 = clockPosition;
                                    row.C28 = color;
                                    break;

                                case 29:
                                    row.ID29 = lateralRow.LateralID;
                                    row.A29 = address;
                                    row.D29 = distance;
                                    row.CP29 = clockPosition;
                                    row.C29 = color;
                                    break;

                                case 30:
                                    row.ID30 = lateralRow.LateralID;
                                    row.A30 = address;
                                    row.D30 = distance;
                                    row.CP30 = clockPosition;
                                    row.C30 = color;
                                    break;

                                case 31:
                                    row.ID31 = lateralRow.LateralID;
                                    row.A31 = address;
                                    row.D31 = distance;
                                    row.CP31 = clockPosition;
                                    row.C31 = color;
                                    break;

                                case 32:
                                    row.ID32 = lateralRow.LateralID;
                                    row.A32 = address;
                                    row.D32 = distance;
                                    row.CP32 = clockPosition;
                                    row.C32 = color;
                                    break;

                                case 33:
                                    row.ID33 = lateralRow.LateralID;
                                    row.A33 = address;
                                    row.D33 = distance;
                                    row.CP33 = clockPosition;
                                    row.C33 = color;
                                    break;

                                case 34:
                                    row.ID34 = lateralRow.LateralID;
                                    row.A34 = address;
                                    row.D34 = distance;
                                    row.CP34 = clockPosition;
                                    row.C34 = color;
                                    break;

                                case 35:
                                    row.ID35 = lateralRow.LateralID;
                                    row.A35 = address;
                                    row.D35 = distance;
                                    row.CP35 = clockPosition;
                                    row.C35 = color;
                                    break;

                                case 36:
                                    row.ID36 = lateralRow.LateralID;
                                    row.A36 = address;
                                    row.D36 = distance;
                                    row.CP36 = clockPosition;
                                    row.C36 = color;
                                    break;

                                case 37:
                                    row.ID37 = lateralRow.LateralID;
                                    row.A37 = address;
                                    row.D37 = distance;
                                    row.CP37 = clockPosition;
                                    row.C37 = color;
                                    break;

                                case 38:
                                    row.ID38 = lateralRow.LateralID;
                                    row.A38 = address;
                                    row.D38 = distance;
                                    row.CP38 = clockPosition;
                                    row.C38 = color;
                                    break;

                                case 39:
                                    row.ID39 = lateralRow.LateralID;
                                    row.A39 = address;
                                    row.D39 = distance;
                                    row.CP39 = clockPosition;
                                    row.C39 = color;
                                    break;

                                case 40:
                                    row.ID40 = lateralRow.LateralID;
                                    row.A40 = address;
                                    row.D40 = distance;
                                    row.CP40 = clockPosition;
                                    row.C40 = color;
                                    break;

                                case 41:
                                    row.ID41 = lateralRow.LateralID;
                                    row.A41 = address;
                                    row.D41 = distance;
                                    row.CP41 = clockPosition;
                                    row.C41 = color;
                                    break;

                                case 42:
                                    row.ID42 = lateralRow.LateralID;
                                    row.A42 = address;
                                    row.D42 = distance;
                                    row.CP42 = clockPosition;
                                    row.C42 = color;
                                    break;

                                case 43:
                                    row.ID43 = lateralRow.LateralID;
                                    row.A43 = address;
                                    row.D43 = distance;
                                    row.CP43 = clockPosition;
                                    row.C43 = color;
                                    break;

                                case 44:
                                    row.ID44 = lateralRow.LateralID;
                                    row.A44 = address;
                                    row.D44 = distance;
                                    row.CP44 = clockPosition;
                                    row.C44 = color;
                                    break;

                                case 45:
                                    row.ID45 = lateralRow.LateralID;
                                    row.A45 = address;
                                    row.D45 = distance;
                                    row.CP45 = clockPosition;
                                    row.C45 = color;
                                    break;

                                case 46:
                                    row.ID46 = lateralRow.LateralID;
                                    row.A46 = address;
                                    row.D46 = distance;
                                    row.CP46 = clockPosition;
                                    row.C46 = color;
                                    break;

                                case 47:
                                    row.ID47 = lateralRow.LateralID;
                                    row.A47 = address;
                                    row.D47 = distance;
                                    row.CP47 = clockPosition;
                                    row.C47 = color;
                                    break;

                                case 48:
                                    row.ID48 = lateralRow.LateralID;
                                    row.A48 = address;
                                    row.D48 = distance;
                                    row.CP48 = clockPosition;
                                    row.C48 = color;
                                    break;

                                case 49:
                                    row.ID49 = lateralRow.LateralID;
                                    row.A49 = address;
                                    row.D49 = distance;
                                    row.CP49 = clockPosition;
                                    row.C49 = color;
                                    break;

                                case 50:
                                    row.ID50 = lateralRow.LateralID;
                                    row.A50 = address;
                                    row.D50 = distance;
                                    row.CP50 = clockPosition;
                                    row.C50 = color;
                                    break;

                                case 51:
                                    row.ID51 = lateralRow.LateralID;
                                    row.A51 = address;
                                    row.D51 = distance;
                                    row.CP51 = clockPosition;
                                    row.C51 = color;
                                    break;

                                case 52:
                                    row.ID52 = lateralRow.LateralID;
                                    row.A52 = address;
                                    row.D52 = distance;
                                    row.CP52 = clockPosition;
                                    row.C52 = color;
                                    break;

                                default:
                                    break;
                            }
                        }
                    }
                }
            }

            return lateralsTot;
        }