public async Task<IHttpActionResult> GetTicketCutoffs(int id)
        {
            TicketCutoff ticketCutoff = await repository.RetrieveAsync(id);
            if (ticketCutoff == null)
            {
                return NotFound();
            }

            TicketCutoffApiModel model = new TicketCutoffApiModel
            {
                TicketCutoffID = ticketCutoff.TicketCutoffID,
                EventID = ticketCutoff.EventID,
                Name = ticketCutoff.Name,
                OnSellDate = ticketCutoff.OnSellDate,
                CutoffDate = ticketCutoff.CutoffDate
            };

            return Ok(model);
        }
        private List<TicketCutoffApiModel> BuildCutoffsWithPrices(int eventID)
        {
            List<TicketCutoffApiModel> items = new List<TicketCutoffApiModel>();
            
            //get sub info
            List<TicketCutoff> cutoffs = repository.Items.Where(x => x.EventID == eventID).OrderBy(x => x.OnSellDate).ToList(); ;
            List<EventAgeGroup> ages = agesRepository.Items.Where(x => x.EventID == eventID).OrderBy(x => x.MinimumAge).ToList();
            List<TicketArea> areas = areasRepository.Items.Where(x => x.EventID == eventID).OrderBy(x => x.TicketAreaID).ToList();

            foreach (TicketCutoff cutoff in cutoffs)
            {
                TicketCutoffApiModel item = new TicketCutoffApiModel
                {
                    TicketCutoffID = cutoff.TicketCutoffID,
                    EventID = cutoff.EventID,
                    Name = cutoff.Name,
                    OnSellDate = cutoff.OnSellDate,
                    CutoffDate = cutoff.CutoffDate,
                    TicketAreas = new List<TicketCutoffAreaApiModel>(),
                    TicketPricesCount = cutoff.TicketPrices.Count
                };

                //loop areas
                foreach (TicketArea area in areas)
                {
                    TicketCutoffAreaApiModel itemArea = new TicketCutoffAreaApiModel()
                    {
                        TicketAreaID = area.TicketAreaID,
                        Name = area.Name,
                        TicketPrices = new List<TicketCutoffPriceModel>()
                    };

                    //loops ages to create price model
                    foreach (EventAgeGroup age in ages)
                    {

                        TicketCutoffPriceModel itemPrice = new TicketCutoffPriceModel {
                            EventAgeGroupID = age.EventAgeGroupID,
                            Name = age.Name,
                            MinimumAge = age.MinimumAge,
                            MaximumAge = age.MaximumAge,
                            TicketCutoffID = cutoff.TicketCutoffID,
                            TicketAreaID = area.TicketAreaID,
                            BasePrice = null,
                            TicketPriceID = null
                        };

                        TicketPrice price = area.TicketPrices
                            .Where(x => x.EventAgeGroupID == age.EventAgeGroupID
                            && x.TicketCutoffID == cutoff.TicketCutoffID).SingleOrDefault();
                        if (price != null)
                        {
                            itemPrice.BasePrice = price.BasePrice;
                            itemPrice.TicketPriceID = price.TicketPriceID;
                        }

                        itemArea.TicketPrices.Add(itemPrice);
                    }

                    item.TicketAreas.Add(itemArea);
                }

                items.Add(item);
            }

            return items;
        }