public async Task <ResponseModel> AddRecord(RequestModel request, string appKey, string baseId) { var responseModel = new ResponseModel { ID = Utilities.GenerateID(), Title = request.Title, Text = request.Text, ReceivedAt = DateTime.UtcNow.ToString("yyyy-MM-ddTHH:mm:ss.fffZ"), }; using AirtableBase airtableBase = new AirtableBase(appKey, baseId); var fields = new Fields(); fields.AddField("id", responseModel.ID); fields.AddField("Summary", responseModel.Title); fields.AddField("Message", responseModel.Text); fields.AddField("receivedAt", responseModel.ReceivedAt); Task <AirtableCreateUpdateReplaceRecordResponse> task = airtableBase.CreateRecord("Messages", fields); AirtableCreateUpdateReplaceRecordResponse response = await task; if (response.Success) { return(responseModel); } else if (response.AirtableApiError is AirtableApiException) { throw new InvalidOperationException(response.AirtableApiError.ErrorMessage); } else { throw new InvalidOperationException("Unknown error"); } }
public async Task <AirtableCreateUpdateReplaceRecordResponse> UpdateRecord(RecordUpdateRequest req) { using (AirtableBase airtableBase = new AirtableBase(appKey, baseId)) { var fields = new Fields(); fields.AddField("Title", req.Title); fields.AddField("Priority", req.Priority); fields.AddField("Status", req.Status); fields.AddField("Due Date", req.DueDate); AirtableCreateUpdateReplaceRecordResponse response = await airtableBase.UpdateRecord(tableName, fields, req.Id.ToString()); //var response = await task; if (!response.Success) { string errorMessage = null; if (response.AirtableApiError is AirtableApiException) { errorMessage = response.AirtableApiError.ErrorMessage; } else { errorMessage = "Unknown error"; } // Report errorMessage } else { var record = response.Record; // Do something with your updated record. } return(response); } }
//=========================== CREATE/POST =========================================== public async Task <AirtableCreateUpdateReplaceRecordResponse> Create(RecordCreateRequest req) { using (AirtableBase airtableBase = new AirtableBase(appKey, baseId)) { var fields = new Fields(); fields.AddField("Title", req.Title); fields.AddField("Priority", req.Priority); fields.AddField("Status", req.Status); fields.AddField("Due Date", req.DueDate); AirtableCreateUpdateReplaceRecordResponse response = await airtableBase.CreateRecord(tableName, fields, true); if (!response.Success) { if (response.AirtableApiError is AirtableApiException) { errorMessage = response.AirtableApiError.ErrorMessage; } else { errorMessage = "Unknown error"; } // Report errorMessage } else { // Do something with your created record. Console.WriteLine("ok"); } return(response); } }
public async Task <HttpResponseMessage> Create(RecordCreateRequest req) { if (req == null) { ModelState.AddModelError("", "You did not add any body data"); } if (!ModelState.IsValid) { return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, ModelState)); } AirtableCreateUpdateReplaceRecordResponse id = await airtableService.Create(req); return(Request.CreateResponse(HttpStatusCode.OK, id)); }
public static async Task SetFriendCodeAsync(SdlPlayer player, string code) { using (AirtableBase airtableBase = new AirtableBase(Globals.BotSettings.AppKey, Globals.BotSettings.BaseId)) { Fields fields = new Fields(); fields.AddField("Friend Code", code); AirtableCreateUpdateReplaceRecordResponse response = await airtableBase.UpdateRecord("Draft Standings", fields, player.AirtableId, true); if (!response.Success) { Logger.Error(response.AirtableApiError.ErrorMessage); } } }
public static async Task RegisterPlayer(ulong discordId, double startingPowerLevel, string nickname) { using (AirtableBase airtableBase = new AirtableBase(Globals.BotSettings.AppKey, Globals.BotSettings.BaseId)) { Fields fields = new Fields(); fields.AddField("Name", nickname); fields.AddField("DiscordID", discordId.ToString()); fields.AddField("Starting Power", startingPowerLevel); if ((await GetAllPlayerRecords()).All(e => e.Fields["DiscordID"].ToString() != discordId.ToString(CultureInfo.InvariantCulture))) { AirtableCreateUpdateReplaceRecordResponse response = await airtableBase.CreateRecord("Draft Standings", fields, true); if (!response.Success) { Console.WriteLine(response.AirtableApiError.ErrorMessage); } } } }
public async Task <bool> UpdateRecord(string recordId, IDictionary <string, object> valuesToUpdate) { _logger.LogTrace($"{GetType()} - BEGIN {nameof(UpdateRecord)}"); using (AirtableBase airtableBase = new AirtableBase(_config.ApiKey, _config.DatabaseId)) { Fields f = new Fields(); foreach (KeyValuePair <string, object> kvp in valuesToUpdate) { f.AddField(kvp.Key, kvp.Value); } AirtableCreateUpdateReplaceRecordResponse res = await airtableBase.UpdateRecord(_config.TableName, f, recordId); if (res.Success) { return(true); } else { _logger.LogError(res.AirtableApiError, $"Une erreur est survenue pendant la mise à jour d'un enregistrement Airtable : {res.AirtableApiError.ErrorName} [{res.AirtableApiError.ErrorCode}] : {res.AirtableApiError.ErrorMessage}"); return(false); } } }
public static async Task PenalizePlayer(ulong discordId, int points, string notes) { AirtableRecord playerRecord = await GetPlayerRecord(discordId); using (AirtableBase airtableBase = new AirtableBase(Globals.BotSettings.AppKey, Globals.BotSettings.BaseId)) { Fields adjustmentsFields = new Fields(); adjustmentsFields.AddField("Player", playerRecord.Id); adjustmentsFields.AddField("Points", -points); adjustmentsFields.AddField("Notes", notes); Task <AirtableCreateUpdateReplaceRecordResponse> createRecordTask = airtableBase.CreateRecord("Adjustments", adjustmentsFields, true); AirtableCreateUpdateReplaceRecordResponse createRecordResponse = await createRecordTask; if (!createRecordResponse.Success) { string errorMessage = createRecordResponse.AirtableApiError != null ? createRecordResponse.AirtableApiError.ErrorMessage : "Unknown error"; SdlAirTableException exception = new SdlAirTableException( errorMessage, SdlAirTableException.AirtableErrorType.CommunicationError); Logger.Error(exception); throw exception; } AirtableRecord record = createRecordResponse.Record; if (!playerRecord.Fields.ContainsKey("Adjustments")) { playerRecord.Fields["Adjustments"] = new JArray(); } IEnumerable <JToken> updatedAdjustmentIds = ((JArray)playerRecord.Fields["Adjustments"]).Append(record.Id); Fields updatePlayerFields = new Fields(); updatePlayerFields.AddField("Adjustments", updatedAdjustmentIds.ToArray()); Task <AirtableCreateUpdateReplaceRecordResponse> updateRecordTask = airtableBase.UpdateRecord("Draft Standings", updatePlayerFields, playerRecord.Id, true); AirtableCreateUpdateReplaceRecordResponse updateRecordResponse = await updateRecordTask; if (!updateRecordResponse.Success) { string errorMessage = updateRecordResponse.AirtableApiError != null ? updateRecordResponse.AirtableApiError.ErrorMessage : "Unknown error"; SdlAirTableException exception = new SdlAirTableException( errorMessage, SdlAirTableException.AirtableErrorType.CommunicationError); Logger.Error(exception); throw exception; } } }