Ejemplo 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"));
        }
Ejemplo n.º 2
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"));
        }