public HttpResponseMessage AddPlayer(PlayerModelDto request)
 {
     try
     {
         _dataAccess.AddPlayer(request, ((UserModel)ActionContext.Request.Properties["user"]).Id);
         return(Request.CreateResponse(HttpStatusCode.OK, "Player successfully added"));
     }
     catch (ClassNotFoundException classNotFoundException)
     {
         return(Request.CreateResponse(HttpStatusCode.InternalServerError,
                                       new ErrorResponse(ClassNotFoundException.ERROR_CODE, classNotFoundException.Message)));
     }
     catch (FactionNotFoundException factionNotFoundException)
     {
         return(Request.CreateResponse(HttpStatusCode.InternalServerError,
                                       new ErrorResponse(FactionNotFoundException.ERROR_CODE, factionNotFoundException.Message)));
     }
     catch (RaceNotFoundException raceNotFoundException)
     {
         return(Request.CreateResponse(HttpStatusCode.InternalServerError,
                                       new ErrorResponse(RaceNotFoundException.ERROR_CODE, raceNotFoundException.Message)));
     }
     catch (PlayerAlreadyExistsException playerAlreadyExistsException)
     {
         return(Request.CreateResponse(HttpStatusCode.InternalServerError,
                                       new ErrorResponse(PlayerAlreadyExistsException.ERROR_CODE, playerAlreadyExistsException.Message)));
     }
     catch (Exception e)
     {
         SmartApartmentLogger.LogAsync(ELogType.Error, e.Message);
         return(Request.CreateResponse(HttpStatusCode.InternalServerError,
                                       new ErrorResponse(500, "Internal server error. Please try again later")));
     }
 }
        public void AddPlayer(PlayerModelDto dto, int userId)
        {
            if (_entities.classes.FirstOrDefault(x => x.pk_id == dto.ClassId) == null)
            {
                throw ClassNotFoundException.FromId(dto.ClassId);
            }
            if (_entities.factions.FirstOrDefault(x => x.pk_id == dto.FactionId) == null)
            {
                throw FactionNotFoundException.FromId(dto.FactionId);
            }
            if (_entities.races.FirstOrDefault(x => x.pk_id == dto.RaceId) == null)
            {
                throw RaceNotFoundException.FromId(dto.RaceId);
            }
            if (_entities.players.FirstOrDefault(x => x.name.Equals(dto.Name)) != null)
            {
                throw new PlayerAlreadyExistsException();
            }

            _entities.players.Add(dto.ToDbObject(userId));
            _entities.SaveChanges();
        }