public async Task <IActionResult> Post([FromBody] UserModel model) { try { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } model.Id = 0; var user = Mapper.Map <User>(model); var seeked = _repo.GetUserByName(model.FirstName, model.LastName); if (seeked != null) { _logger.LogWarning($"User {model.FirstName} {model.LastName} already exists"); return(BadRequest("Could not create user")); } _logger.LogInformation("Creating new User"); _repo.Add(user); if (await _repo.SaveAllAsync()) { user.Id = _repo.GetUserByName(user.FirstName, user.LastName).Id; _repo.Update(user); if (await _repo.SaveAllAsync()) { var newUri = Url.Link("UserGet", new { id = user.Id }); return(Created(newUri, Mapper.Map <UserModel>(user))); } else { _logger.LogWarning("Could not save user to the database"); } } else { _logger.LogWarning("Could not save user to the database"); } } catch (Exception ex) { _logger.LogError($"Threw exception while saving user: {ex}"); } return(BadRequest("Could not create user")); }
public async Task <IActionResult> Post([FromBody] InvitationModel model) { try { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } var seekedInviter = _repo.GetUser(model.Inviter.Id); if (seekedInviter == null) { _logger.LogWarning($"User which which wants to be inviter is not registered in the database"); return(Unauthorized()); } var seekedInvitee = _repo.GetUser(model.Invitee.Id); if (seekedInvitee == null) { return(BadRequest("Invitee does not exists")); } var seekedEvent = _repo.GetEvent(model.Event.Id); if (seekedEvent == null) { return(BadRequest("Event does not exists")); } StringBuilder sb = new StringBuilder(); sb.Append(model.Inviter.FirstName).Append(" ").Append(model.Inviter.LastName); string inviterName = sb.ToString(); sb.Clear(); sb.Append(model.Invitee.FirstName).Append(" ").Append(model.Invitee.LastName); string inviteeName = sb.ToString(); sb.Clear(); string eventName = model.Event.Name; var seeked = _repo.GetInvitationByIds(seekedInviter.Id, seekedInvitee.Id, seekedEvent.Id); if (seeked != null) { _logger.LogWarning($"{inviteeName} has already been invited by {inviterName} for {eventName} "); return(BadRequest("Could not create invitation")); } _logger.LogInformation($"Creating new invitation {inviterName} -> {inviteeName}. Event: {eventName}"); var inv = Mapper.Map <Invitation>(model); inv.Id = 0; inv.InviterId = seekedInviter.Id; inv.InviteeId = seekedInvitee.Id; inv.EventId = seekedEvent.Id; _repo.Add(inv); if (await _repo.SaveAllAsync()) { var newUri = Url.Link("InvitationGet", new { id = inv.Id }); InvitationModel mapped = Mapper.Map <InvitationModel>(inv); mapped.Inviter = Mapper.Map <UserModel>(seekedInviter); mapped.Invitee = Mapper.Map <UserModel>(seekedInvitee); mapped.Event = GetEventModel(seekedEvent.Id); return(Created(newUri, mapped)); } } catch (Exception ex) { _logger.LogError($"Exception thrown while saving invitation: {ex}"); } return(BadRequest("Could not create invitation")); }
public async Task <IActionResult> Post([FromBody] EventModel model) { try { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } var seekedHost = GetEventHost(model); if (seekedHost == null) { _logger.LogWarning($"User which which wants to be a host is not registered in the database"); return(Unauthorized()); } var seeked = _repo.GetEventByName(model.Name); if (seeked != null) { _logger.LogWarning($"Event with name {model.Name} already exists"); return(BadRequest("Could not create event")); } _logger.LogInformation($"Creating new event {model.Name}"); var ev = Mapper.Map <Event>(model); ev.HostFirstName = seekedHost.FirstName; ev.HostLastName = seekedHost.LastName; _repo.Add(ev); if (await _repo.SaveAllAsync()) { ev.Id = _repo.GetEventByName(ev.Name).Id; _repo.Update(ev); if (await _repo.SaveAllAsync()) { var newUri = Url.Link("EventGet", new { id = ev.Id }); EventModel mapped = Mapper.Map <EventModel>(ev); mapped.Host = Mapper.Map <UserModel>(seekedHost); return(Created(newUri, mapped)); } else { _logger.LogWarning("Event created but could not be updated with its host"); } } else { _logger.LogWarning("Could not save event to the database"); } } catch (Exception ex) { _logger.LogError($"Exception thrown while saving event: {ex}"); } return(BadRequest("Could not create event")); }