示例#1
0
        public ClimateSiteModel GetClimateSiteModelExistDB(ClimateSiteModel climateSiteModel)
        {
            ClimateSiteModel climateSiteModelRet = (from c in db.ClimateSites
                                                    where c.ClimateSiteName == climateSiteModel.ClimateSiteName &&
                                                    c.Province == climateSiteModel.Province &&
                                                    c.ECDBID == climateSiteModel.ECDBID &&
                                                    c.ClimateID == climateSiteModel.ClimateID
                                                    select new ClimateSiteModel
            {
                Error = "",
                ClimateSiteID = c.ClimateSiteID,
                DBCommand = (DBCommandEnum)c.DBCommand,
                ClimateSiteTVItemID = c.ClimateSiteTVItemID,
                ClimateID = c.ClimateID,
                ClimateSiteName = c.ClimateSiteName,
                DailyEndDate_Local = c.DailyEndDate_Local,
                DailyNow = c.DailyNow,
                DailyStartDate_Local = c.DailyStartDate_Local,
                ECDBID = c.ECDBID,
                Elevation_m = c.Elevation_m,
                File_desc = c.File_desc,
                HourlyEndDate_Local = c.HourlyEndDate_Local,
                HourlyNow = c.HourlyNow,
                HourlyStartDate_Local = c.HourlyStartDate_Local,
                IsQuebecSite = c.IsQuebecSite,
                IsCoCoRaHS = c.IsCoCoRaHS,
                MonthlyEndDate_Local = c.MonthlyEndDate_Local,
                MonthlyNow = c.MonthlyNow,
                MonthlyStartDate_Local = c.MonthlyStartDate_Local,
                Province = c.Province,
                TCID = c.TCID,
                TimeOffset_hour = c.TimeOffset_hour,
                WMOID = c.WMOID,
                LastUpdateDate_UTC = c.LastUpdateDate_UTC,
                LastUpdateContactTVItemID = c.LastUpdateContactTVItemID,
            }).FirstOrDefault <ClimateSiteModel>();

            if (climateSiteModelRet == null)
            {
                return(ReturnError(string.Format(ServiceRes.CouldNotFind_With_Equal_, ServiceRes.ClimateSite,
                                                 ServiceRes.ClimateSiteName + "," +
                                                 ServiceRes.Province + "," +
                                                 ServiceRes.ECDBID + "," +
                                                 ServiceRes.ClimateID,
                                                 climateSiteModel.ClimateSiteName + "," +
                                                 climateSiteModel.Province + "," +
                                                 climateSiteModel.ECDBID.ToString() + "," +
                                                 climateSiteModel.ClimateID.ToString())));
            }

            return(climateSiteModelRet);
        }
示例#2
0
        // Post
        public ClimateSiteModel PostAddClimateSiteDB(ClimateSiteModel climateSiteModel)
        {
            string retStr = ClimateSiteModelOK(climateSiteModel);

            if (!string.IsNullOrWhiteSpace(retStr))
            {
                return(ReturnError(retStr));
            }

            ContactOK contactOK = IsContactOK();

            if (!string.IsNullOrEmpty(contactOK.Error))
            {
                return(ReturnError(contactOK.Error));
            }

            TVItemModel tvItemModelExist = _TVItemService.GetTVItemModelWithTVItemIDDB(climateSiteModel.ClimateSiteTVItemID);

            if (!string.IsNullOrWhiteSpace(tvItemModelExist.Error))
            {
                return(ReturnError(tvItemModelExist.Error));
            }

            ClimateSite climateSiteNew = new ClimateSite();

            retStr = FillClimateSite(climateSiteNew, climateSiteModel, contactOK);
            if (!string.IsNullOrWhiteSpace(retStr))
            {
                return(ReturnError(retStr));
            }

            using (TransactionScope ts = new TransactionScope())
            {
                db.ClimateSites.Add(climateSiteNew);
                retStr = DoAddChanges();
                if (!string.IsNullOrWhiteSpace(retStr))
                {
                    return(ReturnError(retStr));
                }

                LogModel logModel = _LogService.PostAddLogForObj("ClimateSites", climateSiteNew.ClimateSiteID, LogCommandEnum.Add, climateSiteNew);
                if (!string.IsNullOrWhiteSpace(logModel.Error))
                {
                    return(ReturnError(logModel.Error));
                }

                ts.Complete();
            }
            return(GetClimateSiteModelWithClimateSiteIDDB(climateSiteNew.ClimateSiteID));
        }
示例#3
0
        // Fill
        public string FillClimateSite(ClimateSite climateSiteNew, ClimateSiteModel climateSiteModel, ContactOK contactOK)
        {
            climateSiteNew.DBCommand            = (int)climateSiteModel.DBCommand;
            climateSiteNew.ClimateSiteTVItemID  = climateSiteModel.ClimateSiteTVItemID;
            climateSiteNew.ClimateID            = climateSiteModel.ClimateID;
            climateSiteNew.ClimateSiteName      = climateSiteModel.ClimateSiteName;
            climateSiteNew.DailyEndDate_Local   = climateSiteModel.DailyEndDate_Local;
            climateSiteNew.DailyNow             = climateSiteModel.DailyNow;
            climateSiteNew.DailyStartDate_Local = climateSiteModel.DailyStartDate_Local;
            climateSiteNew.ECDBID                 = climateSiteModel.ECDBID;
            climateSiteNew.Elevation_m            = climateSiteModel.Elevation_m;
            climateSiteNew.File_desc              = climateSiteModel.File_desc;
            climateSiteNew.HourlyEndDate_Local    = climateSiteModel.HourlyEndDate_Local;
            climateSiteNew.HourlyNow              = climateSiteModel.HourlyNow;
            climateSiteNew.HourlyStartDate_Local  = climateSiteModel.HourlyStartDate_Local;
            climateSiteNew.IsQuebecSite           = climateSiteModel.IsQuebecSite;
            climateSiteNew.IsCoCoRaHS             = climateSiteModel.IsCoCoRaHS;
            climateSiteNew.MonthlyEndDate_Local   = climateSiteModel.MonthlyEndDate_Local;
            climateSiteNew.MonthlyNow             = climateSiteModel.MonthlyNow;
            climateSiteNew.MonthlyStartDate_Local = climateSiteModel.MonthlyStartDate_Local;
            climateSiteNew.Province               = climateSiteModel.Province;
            climateSiteNew.TCID               = climateSiteModel.TCID;
            climateSiteNew.TimeOffset_hour    = climateSiteModel.TimeOffset_hour;
            climateSiteNew.WMOID              = climateSiteModel.WMOID;
            climateSiteNew.LastUpdateDate_UTC = DateTime.UtcNow;
            if (contactOK == null)
            {
                climateSiteNew.LastUpdateContactTVItemID = 2;
            }
            else
            {
                climateSiteNew.LastUpdateContactTVItemID = contactOK.ContactTVItemID;
            }

            return("");
        }
示例#4
0
        // Check
        public string ClimateSiteModelOK(ClimateSiteModel climateSiteModel)
        {
            string retStr = FieldCheckNotZeroInt(climateSiteModel.ClimateSiteTVItemID, ServiceRes.ClimateSiteTVItemID);

            if (!string.IsNullOrWhiteSpace(retStr))
            {
                return(retStr);
            }

            retStr = FieldCheckNotNullAndMinMaxLengthString(climateSiteModel.ClimateSiteName, ServiceRes.ClimateSiteName, 2, 100);
            if (!string.IsNullOrWhiteSpace(retStr))
            {
                return(retStr);
            }

            // Commented out because the CoCoRaHS site do not have ECDBID
            //
            //retStr = FieldCheckNotZeroInt(climateSiteModel.ECDBID, ServiceRes.ECDBID);
            //if (!string.IsNullOrWhiteSpace(retStr))
            //{
            //    return retStr;
            //}

            retStr = FieldCheckNotNullAndMinMaxLengthString(climateSiteModel.Province, ServiceRes.Province, 2, 4);
            if (!string.IsNullOrWhiteSpace(retStr))
            {
                return(retStr);
            }

            List <string> ProvinceList = new List <string>()
            {
                "BC", "NB", "NL", "NS", "PE", "QC", "WA", "ME"
            };
            string ProvinceListTxt = "";

            foreach (string s in ProvinceList)
            {
                ProvinceListTxt += "," + s;
            }
            ProvinceListTxt = ProvinceListTxt.Substring(1);
            if (!ProvinceList.Contains(climateSiteModel.Province))
            {
                return(string.Format(ServiceRes.ProvinceNotCorrectNeedToBeOneOf_Its_, ProvinceListTxt.ToString(), climateSiteModel.Province));
            }

            retStr = FieldCheckIfNotNullWithinRangeDouble(climateSiteModel.Elevation_m, ServiceRes.Elevation_m, 0, 10000);
            if (!string.IsNullOrWhiteSpace(retStr))
            {
                return(retStr);
            }

            retStr = FieldCheckIfNotNullMaxLengthString(climateSiteModel.ClimateID, ServiceRes.ClimateID, 10);
            if (!string.IsNullOrWhiteSpace(retStr))
            {
                return(retStr);
            }
            retStr = FieldCheckIfNotNullWithinRangeInt(climateSiteModel.WMOID, ServiceRes.WMOID, 10000, 99999);
            if (!string.IsNullOrWhiteSpace(retStr))
            {
                return(retStr);
            }
            retStr = FieldCheckIfNotNullMaxLengthString(climateSiteModel.TCID, ServiceRes.TCID, 3);
            if (!string.IsNullOrWhiteSpace(retStr))
            {
                return(retStr);
            }
            retStr = FieldCheckIfNotNullWithinRangeDouble(climateSiteModel.TimeOffset_hour, ServiceRes.TimeOffset_hour, -8, -3);
            if (!string.IsNullOrWhiteSpace(retStr))
            {
                return(retStr);
            }
            retStr = FieldCheckIfNotNullMaxLengthString(climateSiteModel.File_desc, ServiceRes.File_desc, 50);
            if (!string.IsNullOrWhiteSpace(retStr))
            {
                return(retStr);
            }
            if (climateSiteModel.HourlyStartDate_Local != null && climateSiteModel.HourlyEndDate_Local != null)
            {
                if (climateSiteModel.HourlyEndDate_Local < climateSiteModel.HourlyStartDate_Local)
                {
                    return(string.Format(ServiceRes._IsBiggerOrEqualTo_, ServiceRes.HourlyStartDate_Local, ServiceRes.HourlyEndDate_Local));
                }
            }
            if (climateSiteModel.DailyStartDate_Local != null && climateSiteModel.DailyEndDate_Local != null)
            {
                if (climateSiteModel.DailyEndDate_Local < climateSiteModel.DailyStartDate_Local)
                {
                    return(string.Format(ServiceRes._IsBiggerOrEqualTo_, ServiceRes.DailyStartDate_Local, ServiceRes.DailyEndDate_Local));
                }
            }
            if (climateSiteModel.MonthlyStartDate_Local != null && climateSiteModel.MonthlyEndDate_Local != null)
            {
                if (climateSiteModel.MonthlyEndDate_Local < climateSiteModel.MonthlyStartDate_Local)
                {
                    return(string.Format(ServiceRes._IsBiggerOrEqualTo_, ServiceRes.MonthlyStartDate_Local, ServiceRes.MonthlyEndDate_Local));
                }
            }

            retStr = _BaseEnumService.DBCommandOK(climateSiteModel.DBCommand);
            if (!string.IsNullOrWhiteSpace(retStr))
            {
                return(retStr);
            }

            return("");
        }
示例#5
0
        public ClimateSiteModel PostUpdateClimateSiteDB(ClimateSiteModel climateSiteModel)
        {
            string retStr = ClimateSiteModelOK(climateSiteModel);

            if (!string.IsNullOrEmpty(retStr))
            {
                return(ReturnError(retStr));
            }

            ContactOK contactOK = IsContactOK();

            if (!string.IsNullOrEmpty(contactOK.Error))
            {
                return(ReturnError(contactOK.Error));
            }

            ClimateSite climateSiteToUpdate = GetClimateSiteWithClimateSiteIDDB(climateSiteModel.ClimateSiteID);

            if (climateSiteToUpdate == null)
            {
                return(ReturnError(string.Format(ServiceRes.CouldNotFind_ToUpdate, ServiceRes.ClimateSite)));
            }

            retStr = FillClimateSite(climateSiteToUpdate, climateSiteModel, contactOK);
            if (!string.IsNullOrWhiteSpace(retStr))
            {
                return(ReturnError(retStr));
            }

            using (TransactionScope ts = new TransactionScope())
            {
                retStr = DoUpdateChanges();
                if (!string.IsNullOrWhiteSpace(retStr))
                {
                    return(ReturnError(retStr));
                }

                LogModel logModel = _LogService.PostAddLogForObj("ClimateSites", climateSiteToUpdate.ClimateSiteID, LogCommandEnum.Change, climateSiteToUpdate);
                if (!string.IsNullOrWhiteSpace(logModel.Error))
                {
                    return(ReturnError(logModel.Error));
                }

                foreach (LanguageEnum Lang in LanguageListAllowable)
                {
                    if (Lang == LanguageRequest)
                    {
                        TVItemLanguageModel tvItemLanguageModelToUpdate = _TVItemService._TVItemLanguageService.GetTVItemLanguageModelWithTVItemIDAndLanguageDB(climateSiteToUpdate.ClimateSiteTVItemID, Lang);
                        if (!string.IsNullOrWhiteSpace(tvItemLanguageModelToUpdate.Error))
                        {
                            return(ReturnError(tvItemLanguageModelToUpdate.Error));
                        }

                        tvItemLanguageModelToUpdate.TVText = CreateTVText(climateSiteModel);
                        if (string.IsNullOrWhiteSpace(tvItemLanguageModelToUpdate.TVText))
                        {
                            return(ReturnError(string.Format(ServiceRes._IsRequired, ServiceRes.TVText)));
                        }

                        TVItemLanguageModel tvItemLanguageModel = _TVItemService._TVItemLanguageService.PostUpdateTVItemLanguageDB(tvItemLanguageModelToUpdate);
                        if (!string.IsNullOrWhiteSpace(tvItemLanguageModel.Error))
                        {
                            return(ReturnError(tvItemLanguageModel.Error));
                        }
                    }
                }

                ts.Complete();
            }
            return(GetClimateSiteModelWithClimateSiteIDDB(climateSiteToUpdate.ClimateSiteID));
        }
示例#6
0
        // Helper
        public string CreateTVText(ClimateSiteModel climateSiteModel)
        {
            string retStr = climateSiteModel.ClimateSiteName + (climateSiteModel.ClimateID == null ? "" : ("(" + climateSiteModel.ClimateID + ")"));

            return(retStr);
        }
        private bool GenerateHTMLSUBSECTOR_MWQM_SITES_SALINITY_TABLE(StringBuilder sbTemp)
        {
            List <string> Letters = new List <string>()
            {
                "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t"
            };
            List <int> ClimateSiteUsedList = new List <int>();
            int        Percent             = 10;
            string     NotUsed             = "";

            _TaskRunnerBaseService.SendPercentToDB(_TaskRunnerBaseService._BWObj.appTaskModel.AppTaskID, Percent);
            _TaskRunnerBaseService.SendStatusTextToDB(_TaskRunnerBaseService.GetTextLanguageFormat1List("Creating_", ReportGenerateObjectsKeywordEnum.SUBSECTOR_MWQM_SITES_SALINITY_TABLE.ToString()));

            List <string> ParamValueList = Parameters.Split("|||".ToCharArray(), StringSplitOptions.RemoveEmptyEntries).ToList();

            // TVItemID and Year already loaded

            TVItemModel tvItemModelSubsector = _TVItemService.GetTVItemModelWithTVItemIDDB(TVItemID);

            if (!string.IsNullOrWhiteSpace(tvItemModelSubsector.Error))
            {
                NotUsed = string.Format(TaskRunnerServiceRes.CouldNotFind_With_Equal_, TaskRunnerServiceRes.TVItem, TaskRunnerServiceRes.TVItemID, TVItemID.ToString());
                _TaskRunnerBaseService._BWObj.TextLanguageList = _TaskRunnerBaseService.GetTextLanguageFormat3List("CouldNotFind_With_Equal_", TaskRunnerServiceRes.TVItem, TaskRunnerServiceRes.TVItemID, TVItemID.ToString());
                return(false);
            }

            string ServerPath = _TVFileService.GetServerFilePath(tvItemModelSubsector.TVItemID);

            List <TVItemModel>     tvItemModelListMWQMSites = _TVItemService.GetChildrenTVItemModelListWithTVItemIDAndTVTypeDB(tvItemModelSubsector.TVItemID, TVTypeEnum.MWQMSite).Where(c => c.IsActive == true).ToList();
            List <MWQMSiteModel>   mwqmSiteModelList        = _MWQMSiteService.GetMWQMSiteModelListWithSubsectorTVItemIDDB(TVItemID);
            List <MWQMRunModel>    mwqmRunModelList         = _MWQMRunService.GetMWQMRunModelListWithSubsectorTVItemIDDB(TVItemID);
            List <MWQMSampleModel> mwqmSampleModelList      = _MWQMSampleService.GetMWQMSampleModelListWithSubsectorTVItemIDDB(TVItemID);
            List <UseOfSiteModel>  useOfSiteModelList       = _UseOfSiteService.GetUseOfSiteModelListWithSubsectorTVItemIDDB(TVItemID).Where(c => c.TVType == TVTypeEnum.ClimateSite).OrderBy(c => c.Ordinal).ToList();

            List <ClimateSiteModel>      climateSiteModelList      = new List <ClimateSiteModel>();
            List <ClimateDataValueModel> climateDataValueModelList = new List <ClimateDataValueModel>();

            foreach (UseOfSiteModel useOfSiteModel in useOfSiteModelList)
            {
                ClimateSiteModel climateSiteModel = _ClimateSiteService.GetClimateSiteModelWithClimateSiteTVItemIDDB(useOfSiteModel.SiteTVItemID);
                if (climateSiteModel != null)
                {
                    climateSiteModelList.Add(climateSiteModel);

                    List <ClimateDataValueModel> climateDataValueModelOneSiteList = _ClimateDataValueService.GetClimateDataValueModelWithClimateSiteIDDB(climateSiteModel.ClimateSiteID);

                    climateDataValueModelList = climateDataValueModelList.Concat(climateDataValueModelOneSiteList).ToList();
                }
            }

            //climateSiteModelList = climateSiteModelList.OrderBy(c => c.ClimateSiteName).ToList();
            List <MWQMSiteModel> mwqmSiteModelList2 = (from s in mwqmSiteModelList
                                                       from t in tvItemModelListMWQMSites
                                                       where s.MWQMSiteTVItemID == t.TVItemID &&
                                                       t.IsActive == true
                                                       orderby s.MWQMSiteTVText
                                                       select s).ToList();

            int  skip    = 0;
            int  take    = 15;
            bool HasData = true;
            //int countRun = 0;
            int TableCount = 0;

            while (HasData)
            {
                Percent += 10;
                if (Percent > 100)
                {
                    Percent = 100;
                }
                _TaskRunnerBaseService.SendPercentToDB(_TaskRunnerBaseService._BWObj.appTaskModel.AppTaskID, Percent);

                //countRun += 1;

                //if (countRun > 2)
                //{
                //    break;
                //}

                List <MWQMRunModel> mwqmRunModelList2 = (from r in mwqmRunModelList
                                                         from s in mwqmSiteModelList2
                                                         from sa in mwqmSampleModelList
                                                         where sa.MWQMRunTVItemID == r.MWQMRunTVItemID &&
                                                         sa.MWQMSiteTVItemID == s.MWQMSiteTVItemID &&
                                                         r.RunSampleType == SampleTypeEnum.Routine &&
                                                         r.DateTime_Local.Year <= Year
                                                         orderby r.DateTime_Local descending
                                                         select r).Distinct().Skip(skip).Take(take).ToList();

                bool HasGreen = false;

                foreach (MWQMRunModel mwqmRunModel in mwqmRunModelList2)
                {
                    if (RunSiteInfoList.Where(c => c.RunTVItemID == mwqmRunModel.MWQMRunTVItemID).Any())
                    {
                        HasGreen = true;
                    }
                }

                if (mwqmRunModelList2.Count > 0 && HasGreen)
                {
                    TableCount += 1;

                    bool hasNoData  = false;
                    bool hasNotUsed = false;

                    sbTemp.AppendLine($@"|||TableCaption| { TaskRunnerServiceRes.Salinity } #{TableCount}|||");

                    sbTemp.AppendLine($@" <table class=""FCSalTempDataTableClass"">");
                    sbTemp.AppendLine($@" <tr>");
                    sbTemp.AppendLine($@" <th class=""rightBottomBorder"">{ TaskRunnerServiceRes.Site }</th>");
                    foreach (MWQMRunModel mwqmRunModel in mwqmRunModelList2)
                    {
                        bool runUsed = RunSiteInfoList.Where(c => c.RunTVItemID == mwqmRunModel.MWQMRunTVItemID).Any() ? true : false;

                        if (runUsed)
                        {
                            //    sbTemp.AppendLine($@" <th class=""bottomBorderGreentext"">{ mwqmRunModel.DateTime_Local.ToString("yyyy") }<br />{ mwqmRunModel.DateTime_Local.ToString("MMM") }<br />{ mwqmRunModel.DateTime_Local.ToString("dd") }</th>");
                            //}
                            //else
                            //{
                            sbTemp.AppendLine($@" <th class=""bottomBorder"">{ mwqmRunModel.DateTime_Local.ToString("yyyy") }<br />{ mwqmRunModel.DateTime_Local.ToString("MMM") }<br />{ mwqmRunModel.DateTime_Local.ToString("dd") }</th>");
                        }
                    }
                    sbTemp.AppendLine($@" </tr>");

                    foreach (MWQMSiteModel mwqmSiteModel in mwqmSiteModelList2)
                    {
                        string siteNameWithoutZeros = mwqmSiteModel.MWQMSiteTVText.Trim();
                        while (true)
                        {
                            if (siteNameWithoutZeros.StartsWith("0"))
                            {
                                siteNameWithoutZeros = siteNameWithoutZeros.Substring(1);
                            }
                            else
                            {
                                break;
                            }
                        }

                        sbTemp.AppendLine($@" <tr>");
                        sbTemp.AppendLine($@" <td class=""rightBorder"">{ siteNameWithoutZeros }</td>");
                        foreach (MWQMRunModel mwqmRunModel in mwqmRunModelList2)
                        {
                            bool runUsed = RunSiteInfoList.Where(c => c.RunTVItemID == mwqmRunModel.MWQMRunTVItemID).Any() ? true : false;

                            bool siteUsed = RunSiteInfoList.Where(c => c.RunTVItemID == mwqmRunModel.MWQMRunTVItemID && c.SiteTVItemID == mwqmSiteModel.MWQMSiteTVItemID).Any() ? true : false;

                            float?value = (float?)(from s in mwqmSampleModelList
                                                   where s.MWQMRunTVItemID == mwqmRunModel.MWQMRunTVItemID &&
                                                   s.MWQMSiteTVItemID == mwqmSiteModel.MWQMSiteTVItemID
                                                   select s.Salinity_PPT).FirstOrDefault();

                            string valueStr = value != null ? (((float)value).ToString("F1")) : "--";
                            //if (showTextGreen)
                            //{
                            //    sbTemp.AppendLine($@" <td class=""textGreen"">{ valueStr }</td>");
                            //}
                            //else
                            //{
                            //    sbTemp.AppendLine($@" <td>{ valueStr }</td>");
                            //}

                            if (runUsed)
                            {
                                if (siteUsed)
                                {
                                    sbTemp.AppendLine($@" <td>{ valueStr }</td>");
                                    if (valueStr == "--")
                                    {
                                        hasNoData = true;
                                    }
                                }
                                else
                                {
                                    if (valueStr == "--")
                                    {
                                        sbTemp.AppendLine($@" <td>{ valueStr }</td>");
                                        hasNoData = true;
                                    }
                                    else
                                    {
                                        sbTemp.AppendLine($@" <td>NU</td>");
                                        hasNotUsed = true;
                                    }
                                }
                            }
                        }
                        sbTemp.AppendLine($@" </tr>");
                    }
                    sbTemp.AppendLine($@" <tr>");
                    sbTemp.AppendLine($@" <td class=""topRightBorder"">{ TaskRunnerServiceRes.StartTide }<br />{ TaskRunnerServiceRes.EndTide }</td>");
                    foreach (MWQMRunModel mwqmRunModel in mwqmRunModelList2)
                    {
                        bool runUsed = RunSiteInfoList.Where(c => c.RunTVItemID == mwqmRunModel.MWQMRunTVItemID).Any() ? true : false;

                        if (runUsed)
                        {
                            string StartTide = GetTideInitial(mwqmRunModel.Tide_Start);
                            string EndTide   = GetTideInitial(mwqmRunModel.Tide_End);
                            sbTemp.AppendLine($@" <td class=""topRightBorder"">{ StartTide }<br />{ EndTide }</td>");
                        }
                    }
                    sbTemp.AppendLine($@" </tr>");

                    sbTemp.AppendLine($@" <tr>");
                    sbTemp.AppendLine($@" <td class=""topRightBorder"">{ TaskRunnerServiceRes.Rain }(mm)<br />{ TaskRunnerServiceRes.Minus1Day }<br />{ TaskRunnerServiceRes.Minus2Day }<br />{ TaskRunnerServiceRes.Minus3Day }<br />{ TaskRunnerServiceRes.Minus4Day }<br />{ TaskRunnerServiceRes.Minus5Day }</td>");
                    foreach (MWQMRunModel mwqmRunModel in mwqmRunModelList2)
                    {
                        bool runUsed = RunSiteInfoList.Where(c => c.RunTVItemID == mwqmRunModel.MWQMRunTVItemID).Any() ? true : false;

                        if (runUsed)
                        {
                            string   sup1  = "";
                            string   sup2  = "";
                            string   sup3  = "";
                            string   sup4  = "";
                            string   sup5  = "";
                            DateTime Date1 = mwqmRunModel.DateTime_Local.AddDays(-1);
                            DateTime Date2 = mwqmRunModel.DateTime_Local.AddDays(-2);
                            DateTime Date3 = mwqmRunModel.DateTime_Local.AddDays(-3);
                            DateTime Date4 = mwqmRunModel.DateTime_Local.AddDays(-4);
                            DateTime Date5 = mwqmRunModel.DateTime_Local.AddDays(-5);

                            // RainDay1
                            for (int i = 0, count = climateSiteModelList.Count; i < count; i++)
                            {
                                if ((from c in climateDataValueModelList
                                     where c.DateTime_Local.Year == Date1.Year &&
                                     c.DateTime_Local.Month == Date1.Month &&
                                     c.DateTime_Local.Day == Date1.Day &&
                                     c.TotalPrecip_mm_cm != null &&
                                     mwqmRunModel.RainDay1_mm != null &&
                                     c.TotalPrecip_mm_cm == mwqmRunModel.RainDay1_mm &&
                                     c.ClimateSiteID == climateSiteModelList[i].ClimateSiteID
                                     select c).Any())
                                {
                                    sup1 = Letters[i];
                                    if (!ClimateSiteUsedList.Contains(i))
                                    {
                                        ClimateSiteUsedList.Add(i);
                                    }
                                    break;
                                }
                            }

                            // RainDay2
                            for (int i = 0, count = climateSiteModelList.Count; i < count; i++)
                            {
                                if ((from c in climateDataValueModelList
                                     where c.DateTime_Local.Year == Date2.Year &&
                                     c.DateTime_Local.Month == Date2.Month &&
                                     c.DateTime_Local.Day == Date2.Day &&
                                     c.TotalPrecip_mm_cm != null &&
                                     mwqmRunModel.RainDay2_mm != null &&
                                     c.TotalPrecip_mm_cm == mwqmRunModel.RainDay2_mm &&
                                     c.ClimateSiteID == climateSiteModelList[i].ClimateSiteID
                                     select c).Any())
                                {
                                    sup2 = Letters[i];
                                    if (!ClimateSiteUsedList.Contains(i))
                                    {
                                        ClimateSiteUsedList.Add(i);
                                    }
                                    break;
                                }
                            }

                            // RainDay3
                            for (int i = 0, count = climateSiteModelList.Count; i < count; i++)
                            {
                                if ((from c in climateDataValueModelList
                                     where c.DateTime_Local.Year == Date3.Year &&
                                     c.DateTime_Local.Month == Date3.Month &&
                                     c.DateTime_Local.Day == Date3.Day &&
                                     c.TotalPrecip_mm_cm != null &&
                                     mwqmRunModel.RainDay3_mm != null &&
                                     c.TotalPrecip_mm_cm == mwqmRunModel.RainDay3_mm &&
                                     c.ClimateSiteID == climateSiteModelList[i].ClimateSiteID
                                     select c).Any())
                                {
                                    sup3 = Letters[i];
                                    if (!ClimateSiteUsedList.Contains(i))
                                    {
                                        ClimateSiteUsedList.Add(i);
                                    }
                                    break;
                                }
                            }

                            // RainDay4
                            for (int i = 0, count = climateSiteModelList.Count; i < count; i++)
                            {
                                if ((from c in climateDataValueModelList
                                     where c.DateTime_Local.Year == Date4.Year &&
                                     c.DateTime_Local.Month == Date4.Month &&
                                     c.DateTime_Local.Day == Date4.Day &&
                                     c.TotalPrecip_mm_cm != null &&
                                     mwqmRunModel.RainDay4_mm != null &&
                                     c.TotalPrecip_mm_cm == mwqmRunModel.RainDay4_mm &&
                                     c.ClimateSiteID == climateSiteModelList[i].ClimateSiteID
                                     select c).Any())
                                {
                                    sup4 = Letters[i];
                                    if (!ClimateSiteUsedList.Contains(i))
                                    {
                                        ClimateSiteUsedList.Add(i);
                                    }
                                    break;
                                }
                            }

                            // RainDay5
                            for (int i = 0, count = climateSiteModelList.Count; i < count; i++)
                            {
                                if ((from c in climateDataValueModelList
                                     where c.DateTime_Local.Year == Date5.Year &&
                                     c.DateTime_Local.Month == Date5.Month &&
                                     c.DateTime_Local.Day == Date5.Day &&
                                     c.TotalPrecip_mm_cm != null &&
                                     mwqmRunModel.RainDay5_mm != null &&
                                     c.TotalPrecip_mm_cm == mwqmRunModel.RainDay5_mm &&
                                     c.ClimateSiteID == climateSiteModelList[i].ClimateSiteID
                                     select c).Any())
                                {
                                    sup5 = Letters[i];
                                    if (!ClimateSiteUsedList.Contains(i))
                                    {
                                        ClimateSiteUsedList.Add(i);
                                    }
                                    break;
                                }
                            }

                            string RainDay1 = mwqmRunModel.RainDay1_mm != null ? ((double)mwqmRunModel.RainDay1_mm).ToString("F0") : "--";
                            string RainDay2 = mwqmRunModel.RainDay2_mm != null ? ((double)mwqmRunModel.RainDay2_mm).ToString("F0") : "--";
                            string RainDay3 = mwqmRunModel.RainDay3_mm != null ? ((double)mwqmRunModel.RainDay3_mm).ToString("F0") : "--";
                            string RainDay4 = mwqmRunModel.RainDay4_mm != null ? ((double)mwqmRunModel.RainDay4_mm).ToString("F0") : "--";
                            string RainDay5 = mwqmRunModel.RainDay5_mm != null ? ((double)mwqmRunModel.RainDay5_mm).ToString("F0") : "--";
                            sbTemp.AppendLine($@" <td class=""topRightBorder"">&nbsp;<br />{ RainDay1 }<sup>{ sup1 }</sup><br />{ RainDay2 }<sup>{ sup2 }</sup><br />{ RainDay3 }<sup>{ sup3 }</sup><br />{ RainDay4 }<sup>{ sup4 }</sup><br />{ RainDay5 }<sup>{ sup5 }</sup></td>");
                        }
                    }
                    sbTemp.AppendLine($@" </tr>");

                    sbTemp.AppendLine($@" </table>");
                    //sbTemp.AppendLine($@" <p><span class=""textGreen"">({ TaskRunnerServiceRes.DataUsedForStatistics })</span>");
                    sbTemp.AppendLine($@" <p><span>");
                    if (hasNoData)
                    {
                        sbTemp.AppendLine($@" -- ({TaskRunnerServiceRes.NoData})</span>");
                    }
                    if (hasNotUsed)
                    {
                        sbTemp.AppendLine($@" NU ({TaskRunnerServiceRes.NotUsed})");
                    }
                    sbTemp.AppendLine($@" </span>");
                    sbTemp.AppendLine($@" <span>&nbsp;&nbsp;&nbsp;{ TaskRunnerServiceRes.ClimateSite }</span>: ");
                    foreach (int i in ClimateSiteUsedList)
                    {
                        sbTemp.Append($@" <span>{ Letters[i] } - { climateSiteModelList[i].ClimateSiteName }<span>&nbsp;&nbsp;&nbsp;");
                    }
                    sbTemp.AppendLine($@" </p>");

                    sbTemp.AppendLine(@"<p>|||PAGE_BREAK|||</p>");

                    skip += take;
                }
                else
                {
                    HasData = false;
                }
            }


            _TaskRunnerBaseService.SendPercentToDB(_TaskRunnerBaseService._BWObj.appTaskModel.AppTaskID, 80);

            return(true);
        }