public async Task <IActionResult> UpsertSponsors(string moniker, [FromBody] SponsorViewModel vm)
        {
            if (ModelState.IsValid)
            {
                try
                {
                    var sponsor = _repo.GetSponsor(vm.Id);

                    if (sponsor == null) // new
                    {
                        sponsor = _mapper.Map <Sponsor>(vm);
                        var eventInfo = _repo.GetEventInfo(moniker);
                        sponsor.Event = eventInfo;
                        _repo.AddOrUpdate(sponsor);

                        await _repo.SaveChangesAsync();

                        return(Created($"/{moniker}/api/sponsors/{vm.Id}", _mapper.Map <SponsorViewModel>(sponsor)));
                    }
                    else
                    {
                        _mapper.Map <SponsorViewModel, Sponsor>(vm, sponsor);
                        _repo.AddOrUpdate(sponsor);
                        await _repo.SaveChangesAsync();

                        return(Ok(vm));
                    }
                }
                catch (Exception ex)
                {
                    _logger.LogError("Failed to update sponsor: {0}", ex);
                    ModelState.AddModelError("", $"Failed to Save: {ex.Message}");
                }
            }

            return(BadRequest("Failed to save Sponsor"));
        }