private bool UpsertCharacter(AvailableCharacter character, bool update)
        {
            try
            {
                var args = new object[] { "@name", character.Name, "@speed", character.Speed, "@ac", character.AC, "@owner", character.Owner == null ? "NPC" : character.Owner, "@maxHP", character.MaxHP, "@dexMod", character.DexModifier };
                if (update)
                {
                    args = args.Append("@id").Append(character.Id).ToArray();
                }

                using (var dbc = DatabaseHelper.GetConnector())
                    using (var cmd = dbc.BuildStoredProcedureCommand(update ? "spUpdateCharacter" : "spSaveCharacter", args))
                    {
                        cmd.ExecuteNonQuery();
                    }
            }
            catch (Exception ex)
            {
                _log.Error(ex);
                return(false);
            }

            return(true);
        }
 public IActionResult SaveCharacter([FromBody] AvailableCharacter character)
 {
     return(_characterService.SaveCharacter(character) ?
            Ok() as IActionResult :
            BadRequest("Error saving character") as IActionResult);
 }
 /// <summary>
 ///     Save a new character to the database
 /// </summary>
 /// <param name="character">Character to save</param>
 /// <returns>The success or failure of the save operation</returns>
 public bool SaveCharacter(AvailableCharacter character)
 {
     return(UpsertCharacter(character, false));
 }
 /// <summary>
 ///     Update information about an existing character
 /// </summary>
 /// <param name="character">Character to update</param>
 /// <returns>The success or failure of the update operation</returns>
 public bool UpdateCharacter(AvailableCharacter character)
 {
     return(UpsertCharacter(character, true));
 }