public void AppendCounts(DetailItemDto from)
 {
     hatchlingsAcquired        += from.hatchlingsAcquired;
     hatchlingsDoa             += from.hatchlingsDoa;
     washbacksUnder5cmAcquired += from.washbacksUnder5cmAcquired;
     washbacksOver5cmAcquired  += from.washbacksOver5cmAcquired;
     washbacksUnder5cmDoa      += from.washbacksUnder5cmDoa;
     washbacksOver5cmDoa       += from.washbacksOver5cmDoa;
 }
 public void SetPercentageOfGrandTotal(DetailItemDto grandTotalCount)
 {
     percentageOfGrandTotal.hatchlingsAcquired        = (grandTotalCount.hatchlingsAcquired == 0) ? 0 : ((double)totalCount.hatchlingsAcquired / grandTotalCount.hatchlingsAcquired * 100);
     percentageOfGrandTotal.hatchlingsDoa             = (grandTotalCount.hatchlingsDoa == 0) ? 0 : ((double)totalCount.hatchlingsDoa / grandTotalCount.hatchlingsDoa * 100);
     percentageOfGrandTotal.washbacksUnder5cmAcquired = (grandTotalCount.washbacksUnder5cmAcquired == 0) ? 0 : ((double)totalCount.washbacksUnder5cmAcquired / grandTotalCount.washbacksUnder5cmAcquired * 100);
     percentageOfGrandTotal.washbacksOver5cmAcquired  = (grandTotalCount.washbacksOver5cmAcquired == 0) ? 0 : ((double)totalCount.washbacksOver5cmAcquired / grandTotalCount.washbacksOver5cmAcquired * 100);
     percentageOfGrandTotal.washbacksUnder5cmDoa      = (grandTotalCount.washbacksUnder5cmDoa == 0) ? 0 : ((double)totalCount.washbacksUnder5cmDoa / grandTotalCount.washbacksUnder5cmDoa * 100);
     percentageOfGrandTotal.washbacksOver5cmDoa       = (grandTotalCount.washbacksOver5cmDoa == 0) ? 0 : ((double)totalCount.washbacksOver5cmDoa / grandTotalCount.washbacksOver5cmDoa * 100);
 }
 public CountyCountDto()
 {
     ccCount                = new DetailItemDto();
     cmCount                = new DetailItemDto();
     dcCount                = new DetailItemDto();
     otherCount             = new DetailItemDto();
     unknownCount           = new DetailItemDto();
     totalCount             = new DetailItemDto();
     percentageOfGrandTotal = new PercentageOfGrandTotalDto();
 }
Exemple #4
0
        public static async Task <object> Handle(string organizationId, RosterRequest request)
        {
            var response = new ContentDto();

            var reportOptions = JsonSerializer.Deserialize <TurtleTagReportOptionsDto>(request.body.GetRawText());

            reportOptions.dateFrom ??= "0000-00-00";
            reportOptions.dateThru ??= "9999-99-99";

            var seaTurtleService = new SeaTurtleService(organizationId);
            var seaTurtles       = (await seaTurtleService.GetSeaTurtles()).OrderBy(x => x.dateAcquired).ThenBy(x => x.sidNumber).ThenBy(x => x.seaTurtleName);

            foreach (var seaTurtle in seaTurtles)
            {
                var detailItem = new DetailItemDto
                {
                    seaTurtleId       = seaTurtle.seaTurtleId,
                    sidNumber         = seaTurtle.sidNumber,
                    seaTurtleName     = seaTurtle.seaTurtleName,
                    dateRelinquished  = seaTurtle.dateRelinquished,
                    strandingIdNumber = seaTurtle.strandingIdNumber,
                };

                var seaTurtleTagService = new SeaTurtleTagService(organizationId, seaTurtle.seaTurtleId);
                var seaTurtleTags       = await seaTurtleTagService.GetSeaTurtleTags();

                seaTurtleTags = seaTurtleTags.Where(x =>
                                                    (reportOptions.isPit && x.tagType == "PIT") ||
                                                    (reportOptions.isLff && x.location == "LFF" && x.tagType != "PIT") ||
                                                    (reportOptions.isRff && x.location == "RFF" && x.tagType != "PIT") ||
                                                    (reportOptions.isLrf && x.location == "LRF" && x.tagType != "PIT") ||
                                                    (reportOptions.isRrf && x.location == "RRF" && x.tagType != "PIT")
                                                    ).ToList();
                var orderedTags = seaTurtleTags.OrderBy(x => x.tagType != "PIT").ThenBy(x => x.location);
                detailItem.tags = orderedTags.Select(x => new DetailItemTagDto {
                    label = x.tagType == "PIT" ? "PIT" : x.location, tagNumber = x.tagNumber, dateTagged = x.dateTagged
                }).ToList();

                var includeItem = false;
                switch (reportOptions.filterDateType)
                {
                case "dateTagged":
                    includeItem = detailItem.tags.Any(x => !string.IsNullOrEmpty(x.dateTagged) &&
                                                      (reportOptions.dateFrom.CompareTo(x.dateTagged) <= 0 && x.dateTagged.CompareTo(reportOptions.dateThru) <= 0));
                    break;

                case "dateAcquired":
                    includeItem = string.IsNullOrEmpty(seaTurtle.dateAcquired) ||
                                  (reportOptions.dateFrom.CompareTo(seaTurtle.dateAcquired) <= 0 && seaTurtle.dateAcquired.CompareTo(reportOptions.dateThru) <= 0);
                    break;

                case "dateRelinquished":
                    if (reportOptions.includeNonRelinquishedTurtles)
                    {
                        includeItem = string.IsNullOrEmpty(seaTurtle.dateRelinquished) ||
                                      (reportOptions.dateFrom.CompareTo(seaTurtle.dateRelinquished) <= 0 && seaTurtle.dateRelinquished.CompareTo(reportOptions.dateThru) <= 0);
                    }
                    else
                    {
                        includeItem = !string.IsNullOrEmpty(seaTurtle.dateRelinquished) &&
                                      (reportOptions.dateFrom.CompareTo(seaTurtle.dateRelinquished) <= 0 && seaTurtle.dateRelinquished.CompareTo(reportOptions.dateThru) <= 0);
                    }
                    break;

                default:
                    break;
                }

                if (includeItem)
                {
                    response.detailItems.Add(detailItem);
                }
            }

            return(response);
        }
        public static async Task <object> Handle(string organizationId, RosterRequest request)
        {
            var response = new ContentDto();

            var reportOptions = JsonSerializer.Deserialize <ReportOptionsDateRangeDto>(request.body.GetRawText());

            reportOptions.dateFrom ??= "0000-00-00";
            reportOptions.dateThru ??= "9999-99-99";

            var seaTurtleService = new SeaTurtleService(organizationId);
            var seaTurtles       = (await seaTurtleService.GetSeaTurtles())
                                   .Where(x => !string.IsNullOrEmpty(x.dateAcquired) && x.dateAcquired.CompareTo(reportOptions.dateThru) <= 0)
                                   .Where(x => string.IsNullOrEmpty(x.dateRelinquished) || (!string.IsNullOrEmpty(x.dateRelinquished) && reportOptions.dateFrom.CompareTo(x.dateRelinquished) <= 0))
                                   .OrderBy(x => x.sidNumber)
                                   .ThenBy(x => x.dateAcquired)
                                   .ThenBy(x => x.seaTurtleName);

            response.totalCount = seaTurtles.Count();

            SummaryItemDto GetSummaryItem(string label, string propertyName)
            {
                var count = seaTurtles.Count(x => Convert.ToBoolean(x.GetType().GetProperty(propertyName).GetValue(x)));

                return(new SummaryItemDto
                {
                    label = label,
                    count = count,
                    percentageOfTotal = (double)count / response.totalCount * 100
                });
            }

            response.summaryItems.Add(GetSummaryItem("Boat/Propeller strike", nameof(SeaTurtleModel.injuryBoatStrike)));
            response.summaryItems.Add(GetSummaryItem("Intestinal impaction", nameof(SeaTurtleModel.injuryIntestinalImpaction)));
            response.summaryItems.Add(GetSummaryItem("Line/Net entanglement", nameof(SeaTurtleModel.injuryLineEntanglement)));
            response.summaryItems.Add(GetSummaryItem("Fish hook", nameof(SeaTurtleModel.injuryFishHook)));
            response.summaryItems.Add(GetSummaryItem("Upper respiratory", nameof(SeaTurtleModel.injuryUpperRespiratory)));
            response.summaryItems.Add(GetSummaryItem("Shark/Bird bite", nameof(SeaTurtleModel.injuryAnimalBite)));
            response.summaryItems.Add(GetSummaryItem("Fibropapilloma", nameof(SeaTurtleModel.injuryFibropapilloma)));
            response.summaryItems.Add(GetSummaryItem("Misc. epidemic", nameof(SeaTurtleModel.injuryMiscEpidemic)));
            response.summaryItems.Add(GetSummaryItem("DOA", nameof(SeaTurtleModel.injuryDoa)));
            response.summaryItems.Add(GetSummaryItem("Other", nameof(SeaTurtleModel.injuryOther)));

            var noneCount = seaTurtles.Count(x =>
                                             !x.injuryBoatStrike && !x.injuryIntestinalImpaction && !x.injuryLineEntanglement &&
                                             !x.injuryFishHook && !x.injuryUpperRespiratory && !x.injuryAnimalBite &&
                                             !x.injuryFibropapilloma && !x.injuryMiscEpidemic && !x.injuryDoa && !x.injuryOther
                                             );

            var noneCountSummaryItem = new SummaryItemDto
            {
                label             = "None",
                count             = noneCount,
                percentageOfTotal = (double)noneCount / response.totalCount * 100
            };

            response.summaryItems.Add(noneCountSummaryItem);

            foreach (var seaTurtle in seaTurtles)
            {
                var detailItem = new DetailItemDto
                {
                    seaTurtleId               = seaTurtle.seaTurtleId,
                    seaTurtleName             = seaTurtle.seaTurtleName ?? seaTurtle.sidNumber,
                    injuryBoatStrike          = seaTurtle.injuryBoatStrike,
                    injuryIntestinalImpaction = seaTurtle.injuryIntestinalImpaction,
                    injuryLineEntanglement    = seaTurtle.injuryLineEntanglement,
                    injuryFishHook            = seaTurtle.injuryFishHook,
                    injuryUpperRespiratory    = seaTurtle.injuryUpperRespiratory,
                    injuryAnimalBite          = seaTurtle.injuryAnimalBite,
                    injuryFibropapilloma      = seaTurtle.injuryFibropapilloma,
                    injuryMiscEpidemic        = seaTurtle.injuryMiscEpidemic,
                    injuryDoa   = seaTurtle.injuryDoa,
                    injuryOther = seaTurtle.injuryOther,
                };

                response.detailItems.Add(detailItem);
            }

            return(response);
        }