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(); }
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); }