public Capacity OpportunityCapacity(int opportunityId, int eventId, int? minNeeded, int? maxNeeded) { var opportunity = _opportunityService.GetOpportunityResponses(opportunityId, _apiUserService.GetToken()); var min = minNeeded; var max = maxNeeded; var signedUp = opportunity.Count(r => r.Event_ID == eventId); var capacity = new Capacity {Display = true}; if (max == null && min == null) { capacity.Display = false; return capacity; } int calc; if (max == null) { capacity.Minimum = min.GetValueOrDefault(); //is this valid?? max is null so put min value in max? capacity.Maximum = capacity.Minimum; calc = capacity.Minimum - signedUp; } else if (min == null) { capacity.Maximum = max.GetValueOrDefault(); //is this valid?? capacity.Minimum = capacity.Maximum; calc = capacity.Maximum - signedUp; } else { capacity.Maximum = max.GetValueOrDefault(); capacity.Minimum = min.GetValueOrDefault(); calc = capacity.Minimum - signedUp; } if (signedUp < capacity.Maximum && signedUp < capacity.Minimum) { capacity.Message = string.Format("{0} Needed", calc); capacity.BadgeType = BadgeType.LabelInfo.ToString(); capacity.Available = calc; capacity.Taken = signedUp; } else if (signedUp >= capacity.Maximum) { capacity.Message = "Full"; capacity.BadgeType = BadgeType.LabelDefault.ToString(); capacity.Available = calc; capacity.Taken = signedUp; } return capacity; }
public void OpportunityCapacityHasMinHasMax(int? min, int? max, List<Response> mockResponses, Capacity expectedCapacity) { const int opportunityId = 9999; const int eventId = 1000; var opportunity = new Opportunity(); opportunity.MaximumNeeded = max; opportunity.MinimumNeeded = min; opportunity.OpportunityId = opportunityId; opportunity.Responses = mockResponses; _opportunityService.Setup(m => m.GetOpportunityResponses(opportunityId, It.IsAny<string>())) .Returns(opportunity.Responses); var capacity = _fixture.OpportunityCapacity(opportunityId, eventId, min, max); Assert.IsNotNull(capacity); Assert.AreEqual(capacity.Available, expectedCapacity.Available); Assert.AreEqual(capacity.BadgeType, expectedCapacity.BadgeType); Assert.AreEqual(capacity.Display, expectedCapacity.Display); Assert.AreEqual(capacity.Maximum, expectedCapacity.Maximum); Assert.AreEqual(capacity.Message, expectedCapacity.Message); Assert.AreEqual(capacity.Minimum, expectedCapacity.Minimum); Assert.AreEqual(capacity.Taken, expectedCapacity.Taken); }