public async Task <IActionResult> Insert(string moniker, [FromBody] EventInfoViewModel vm) { try { if (moniker != vm.Moniker) { return(BadRequest("Wrong Event with Moniker")); } var info = _repo.GetEventInfo(vm.Moniker); if (info != null) { return(BadRequest("Cannot add duplicate moniker")); } else { info = _mapper.Map <EventInfo>(vm); info.Name = $"Event Name for {vm.Moniker}"; info.Location = new EventLocation(); } _repo.AddOrUpdate(info); await _repo.SaveChangesAsync(); return(Created($"/api/events/{info.Moniker}", _mapper.Map <EventInfoViewModel>(info))); } catch (Exception ex) { _logger.LogError("Failed to upsert EventInfo. {0}", ex); } return(BadRequest("Failed to save new event.")); }
public async Task <IActionResult> Create(string moniker, [FromBody] Room model) { if (ModelState.IsValid) { try { var eventInfo = await _repo.GetEventInfoAsync(moniker); if (eventInfo != null) { model.Event = eventInfo; _repo.AddOrUpdate(model); await _repo.SaveChangesAsync(); return(Created($"{moniker}/api/rooms/{model.Id}", model)); } } catch (Exception ex) { _logger.LogError("Failed to save new Room: {0}", ex); } } return(BadRequest("Failed to save Room")); }
public async Task <IActionResult> Upsert([FromBody] EventInfoViewModel vm) { try { var info = _repo.GetEventInfo(vm.Moniker); if (info == null) { info = Mapper.Map <EventInfo>(vm); } else { Mapper.Map(vm, info); } _repo.AddOrUpdate(info); await _repo.SaveChangesAsync(); return(Ok(Mapper.Map <EventInfoViewModel>(info))); } catch (Exception ex) { _logger.LogError("Failed to upsert EventInfo. {0}", ex); } return(BadRequest("Failed to save new event.")); }
public async Task <IActionResult> Put(string name, [FromBody] CodeCampUserViewModel vm) { var user = await _userMgr.FindByNameAsync(name); _mapper.Map <CodeCampUserViewModel, CodeCampUser>(vm, user); await _repo.SaveChangesAsync(); return(Ok(_mapper.Map <CodeCampUserViewModel>(user))); }
public async Task <IActionResult> UpsertSponsors(string moniker, [FromBody] SponsorViewModel vm) { if (ModelState.IsValid) { try { var sponsor = await _repo.GetSponsorAsync(vm.Id); if (sponsor == null) // new { sponsor = _mapper.Map <Sponsor>(vm); var eventInfo = await _repo.GetEventInfoAsync(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")); }
public async Task <IActionResult> ToggleStar(string moniker, int talkId) { try { var state = _repo.ToggleTalkForUser(moniker, User.Identity.Name, talkId); await _repo.SaveChangesAsync(); return(Ok(state)); } catch (Exception ex) { _logger.LogError("Failed to save favorite talk: {0}", ex); } return(BadRequest("Failed to toggle star")); }
async Task <IActionResult> UpsertSpeaker(SpeakerViewModel model, Speaker speaker, string moniker, string userName) { if (ModelState.IsValid) { try { if (speaker == null) { speaker = _mapper.Map <Speaker>(model); speaker.UserName = userName; speaker.Event = await _repo.GetEventInfoAsync(moniker); // Send confirmation email on new speaker var user = await _userMgr.FindByNameAsync(userName); var speakerUrl = this.Url.Link("MySpeakerPage", new { moniker = moniker }); await _mailService.SendTemplateMailAsync( "SpeakerSignUp", new SpeakerModel() { Name = user.Name, Email = user.Email, Subject = $"Speaking at the {speaker.Event.Name}", Speaker = speaker, SpeakerUrl = speakerUrl, Event = speaker.Event }); } else { _mapper.Map <SpeakerViewModel, Speaker>(model, speaker); } _repo.AddOrUpdate(speaker); await _repo.SaveChangesAsync(); return(Ok(_mapper.Map <SpeakerViewModel>(speaker))); } catch (Exception ex) { _logger.LogError("Failed to get update speaker: {0}", ex); ModelState.AddModelError("", $"Failed to Save: {ex.Message}"); } } _logger.LogError("Failed to get update speaker because of bad Model State: {0}", ModelState); return(BadRequest($"Failed to save Speaker: ModelState has Errors: #{ModelState.ErrorCount}")); }
async Task <IActionResult> UpsertSpeaker(SpeakerViewModel model, Speaker speaker, string moniker, string userName) { if (ModelState.IsValid) { try { if (speaker == null) { speaker = Mapper.Map <Speaker>(model); speaker.UserName = userName; speaker.Event = _repo.GetEventInfo(moniker); // Send confirmation email on new speaker var user = await _userMgr.FindByNameAsync(userName); var speakerUrl = this.Url.Link("MySpeakerPage", new { moniker = moniker }); await _mailService.SendTemplateMailAsync(user.Name, user.Email, $"Speaking at the {speaker.Event.Name}", "SpeakerSignUp", speaker.Event.Name, speaker.Event.CallForSpeakersClosed.ToShortDateString(), speakerUrl); } else { Mapper.Map <SpeakerViewModel, Speaker>(model, speaker); } _repo.AddOrUpdate(speaker); await _repo.SaveChangesAsync(); return(Ok(Mapper.Map <SpeakerViewModel>(speaker))); } catch (Exception ex) { _logger.LogError("Failed to get update speaker: {0}", ex); ModelState.AddModelError("", $"Failed to Save: {ex.Message}"); } } return(BadRequest("Failed to save Speaker")); }
public async Task <IActionResult> ToggleApproved(string moniker, int id) { try { var talk = await _repo.GetTalkAsync(id); if (talk.Speaker.Event.Moniker != moniker) { return(BadRequest("Bad Event for this Talk")); } talk.Approved = !talk.Approved; await _repo.SaveChangesAsync(); if (talk.Approved) { var user = await _userMgr.FindByNameAsync(talk.Speaker.UserName); if (user != null) { var speakerUrl = this.Url.Link("SpeakerTalkPage", new { moniker = moniker, id = talk.Speaker.Slug }); await _mailService.SendTemplateMailAsync( "TalkAcceptance", new TalkModel() { Name = user.Name, Email = user.Email, Subject = $"Invited to Speak at the {talk.Speaker.Event.Name}", Talk = talk, SpeakerUrl = speakerUrl, Moniker = moniker }); } } return(Ok(talk.Approved)); } catch (Exception ex) { _logger.LogError("Failed to toggle the 'approved' talk: {0}", ex); } return(BadRequest("Could not change Approved.")); }
public async Task <IActionResult> ToggleApproved(string moniker, int id) { try { var talk = _repo.GetTalk(id); if (talk.Speaker.Event.Moniker != moniker) { return(BadRequest("Bad Event for this Talk")); } talk.Approved = !talk.Approved; await _repo.SaveChangesAsync(); return(Ok()); } catch (Exception ex) { _logger.LogError("Failed to toggle the 'approved' talk: {0}", ex); } return(BadRequest("Could not change Approved.")); }