Esempio n. 1
0
        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"));
        }
Esempio n. 2
0
        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"));
        }
Esempio n. 3
0
        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"));
        }