Пример #1
0
        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);
            }
        }
Пример #2
0
        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");
            }
        }
Пример #3
0
        //=========================== 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);
            }
        }
Пример #4
0
        public async Task CreateAfk(AfkObject data)
        {
            Fields field = new Fields();

            field.AddField("id", data.Id);
            field.AddField("isAfk", data.IsAfk);
            field.AddField("message", data.Message);

            await Base.CreateRecord(table, field);
        }
Пример #5
0
        public async Task UpdateWaifus(WaifuObject data)
        {
            Fields field = new Fields();

            field.AddField("Waifus", data.Waifus);
            field.AddField("Feeds", data.Feeds);
            field.AddField("Levels", data.Levels);
            field.AddField("Lewds", data.Lewds);
            field.AddField("LastModifiedHour", data.LastModifiedHour);
            await Base.UpdateRecord(table, field, data.RecordId);
        }
Пример #6
0
        public Fields GetFields()
        {
            var fields = new Fields();

            fields.AddField("Name", Name);
            fields.AddField("Description", Description);
            fields.AddField("Is Active", IsActive);
            fields.AddField("Email Address", EmailAddress);

            return(fields);
        }
Пример #7
0
        private static IFields createFields(string string_0, string string_1, bool bool_0,
                                            ISpatialReference ispatialReference_0, ISpatialReference ispatialReference_1)
        {
            IFieldsEdit edit = new Fields() as IFieldsEdit;

            edit.AddField(createOIDField("ObjectID"));
            edit.AddField(createNameField("name"));
            edit.AddField(createRasterField(string_0, bool_0, ispatialReference_1));
            edit.AddField(createShapeField(string_1, ispatialReference_0));
            return(edit);
        }
Пример #8
0
        public async Task UpdateAfk(AfkObject data)
        {
            Fields field = new Fields();

            field.AddField("isAfk", data.IsAfk);
            field.AddField("message", data.Message);

            var result = await Base.UpdateRecord(table, field, data.RecordId);

            Console.WriteLine($"Update AFK Result: {result.Success}");
            Console.WriteLine($"Error: {result.AirtableApiError}");
        }
Пример #9
0
        private void LogInventoryEntry(string entryName, string componentID, int quantityChange, string orderID = "")
        {
            var logFields = new Fields();

            logFields.AddField("Name", entryName);
            logFields.AddField("Items", new JArray {
                componentID
            });
            logFields.AddField("Quantity Change", quantityChange);
            logFields.AddField("OrderID", orderID);
            var task     = _invAirtableBase.CreateRecord(logFieldName, logFields);
            var response = task.Result;
        }
Пример #10
0
        public async Task <(bool, string)> PostAttachmentToRecord(string magazineCoverUrl, string table, string recordId)
        {
            AirtableAttachment attachment = new AirtableAttachment()
            {
                Url = magazineCoverUrl
            };
            List <AirtableAttachment> attachmentList = new List <AirtableAttachment> {
                attachment
            };

            using (AirtableBase airtableBase = new AirtableBase(ApiKey, BaseId)) {
                var fields = new Fields();
                fields.AddField("Cover", attachmentList);

                var task = airtableBase.UpdateRecord(table, fields, recordId);

                var response = await task;

                if (response.Success)
                {
                    return(true, null);
                }
                else if (response.AirtableApiError is AirtableApiException)
                {
                    return(false, response.AirtableApiError.GetBaseException().Message);
                }
                else
                {
                    return(false, "Unknown error");
                }
            }
        }
        public async Task <AirtableCreateUpdateReplaceRecordResponse> CreateRecordAsAsync(LogMessage msg)
        {
            AirtableCreateUpdateReplaceRecordResponse response;

            using (AirtableBase airtableBase = new AirtableBase(appKey, baseId))
            {
                var fields = new Fields();
                fields.AddField(Constants.ID, msg.Id);
                fields.AddField(Constants.SUMMARY, msg.Title);
                fields.AddField(Constants.MESSAGE, msg.Text);
                fields.AddField(Constants.RECEIVEDAT, msg.ReceivedAt);
                Task <AirtableCreateUpdateReplaceRecordResponse> task = airtableBase.CreateRecord("Messages", fields, true);
                response = await task;
            }

            return(response);
        }
Пример #12
0
        private Fields GetFields(MessageDTO messageDTO)
        {
            var fields = new Fields();

            foreach (PropertyInfo pi in messageDTO.GetType().GetProperties())
            {
                fields.AddField(pi.Name, pi.GetValue(messageDTO, null)?.ToString());
            }
            return(fields);
        }
Пример #13
0
        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);
                    }
                }
            }
        }
Пример #14
0
        public async Task CreateRecordsIntoAirtable()
        {
            using (AirtableBase airtableBase = new AirtableBase(appKey, baseId))
            {
                // Create Attachments list
                //var attachmentList = new List<AirtableAttachment>();
                //attachmentList.Add(new AirtableAttachment { Url = "https://upload.wikimedia.org/wikipedia/en/d/d1/Picasso_three_musicians_moma_2006.jpg" });

                var fields = new Fields();
                fields.AddField("User Email", "Pablo Picasso");
                fields.AddField("Notes", "Spanish expatriate Pablo Picasso was one of the greatest and most influential artists of the 20th century, as well as the co-creator of Cubism.");

                //fields.AddField("Attachments", attachmentList);
                //fields.AddField("On Display?", false);

                Task <AirtableCreateUpdateReplaceRecordResponse> task = airtableBase.CreateRecord("New Users", fields, true);
                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 created record.
                }
            }
        }
Пример #15
0
        public void AddImageToProduct(InventoryProduct product, string imageURL = "")
        {
            //Task<AirtableRetrieveRecordResponse> task = _invAirtableBase.RetrieveRecord(ProductsTableName, product.Record.Id);
            //var response = task.Result;

            Fields mainField = new Fields();
            Fields imgField  = new Fields();

            imgField.AddField("url", imageURL);
            mainField.AddField("Image", imgField);


            var updateTask     = _invAirtableBase.UpdateRecord(ProductsTableName, mainField, product.Record.Id);
            var updateResponse = updateTask.Result;
        }
Пример #16
0
        public bool UpdateCompletedOrderComponentEntries(string orderID)
        {
            string offset = "";
            string query  = "{OrderID} = '" + orderID + "'";
            //mark component entries for the completed order as shipped
            Task <AirtableListRecordsResponse> task = _invAirtableBase.ListRecords(logFieldName, offset, null, query);

            foreach (var logRecord in task.Result.Records)
            {
                var logFields = new Fields();
                logFields.AddField("Shipped", true);
                var updateTask = _invAirtableBase.UpdateRecord(logFieldName, logFields, logRecord.Id);
                var response   = updateTask.Result;
            }
            return(true);
        }
Пример #17
0
        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);
                }
            }
        }
Пример #18
0
        public async Task CreateCooldowns(CooldownObject data)
        {
            Fields field = new Fields();

            field.AddField("Daily", data.Daily);
            field.AddField("Bless", data.Bless);
            field.AddField("Pluck", data.Pluck);
            field.AddField("Vote", data.Vote);
            field.AddField("Work", data.Work);
            field.AddField("Thievery", data.Thievery);
            field.AddField("userId", data.Id);

            await Base.CreateRecord(table, field);
        }
Пример #19
0
        public Result Execute(
            ExternalCommandData commandData,
            ref string message,
            ElementSet elements)
        {
            UIApplication uiapp = commandData.Application;
            UIDocument    uidoc = uiapp.ActiveUIDocument;
            Application   app   = uiapp.Application;
            Document      doc   = uidoc.Document;

            string configPath = @"C:\Temp\AirtableSettings.csv";

            try
            {
                Dictionary <string, Helpers.CardContent> dashboardDictionary = Helpers.ModelStatus(doc);

                List <string> apiAndKeys = Helpers.GetAirtableKeys(configPath);
                string        baseId     = apiAndKeys[0];
                string        appKey     = apiAndKeys[1];

                var fields = new Fields();

                foreach (var dict in dashboardDictionary)
                {
                    fields.AddField(dict.Key, dict.Value.Value);
                }

                AirtableBase airtableBase = new AirtableBase(appKey, baseId);

                //var listRecords = GetRecords(airtableBase, "Model Status", records, errorMessage);
                var create = Helpers.CreateRecord(airtableBase, "Model Status", fields);

                Task.Run(() => create);
                //Task.WaitAll(listRecords, create);
                //Task.WaitAll(create);


                return(Result.Succeeded);
            }

            catch (Exception ex)
            {
                TaskDialog.Show("Error", ex.Message);
                return(Result.Failed);
            }
        }
Пример #20
0
        public string GetMonthlyID(DateTime date)
        {
            var    currentMonth = date.ToString("MM/yyyy");
            Fields fields       = new Fields();

            fields.AddField(nameKey, currentMonth);
            var dict = GetMonthlyEntries();

            if (dict.ContainsKey(currentMonth))
            {
                return(dict[currentMonth]);
            }
            else
            {
                Task <AirtableCreateUpdateReplaceRecordResponse> task = _mainAirtableBase.CreateRecord(TableName, fields);
                var response = task.Result;
                return(task.Result.Record.Id);
            }
        }
Пример #21
0
        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 <IActionResult> Run(
            [HttpTrigger(AuthorizationLevel.Function, "get", "post", Route = null)] HttpRequest req,
            ILogger log)
        {
            log.LogInformation("C# HTTP trigger function processed a request.");

            string rotation = await new StreamReader(req.Body).ReadToEndAsync();

            using (AirtableBase airtableBase = new AirtableBase(
                       Environment.GetEnvironmentVariable("airtableApiKey"),
                       Environment.GetEnvironmentVariable("airtableBaseId")))
            {
                log.LogInformation("Airtable connection initialized.");

                var rotationNumber          = int.Parse(new Regex(@"(^\d+)", RegexOptions.Multiline).Match(rotation).Groups[1].Value);
                var rotationStartDateString = new Regex(@" (\d{2}[A-Z]{3})").Match(rotation).Groups[1].Value;
                var rotationStartDate       = monthConverter[rotationStartDateString.Substring(2, 3)] + "/" +
                                              int.Parse(rotationStartDateString.Substring(0, 2)) + "/" +
                                              DateTime.Now.Year;
                var rotationNumberOfAttendants = new Regex(@"([0-9]+) F\/A").Match(rotation).Groups[1].Value;
                log.LogInformation($"Parsed rotation #{rotationNumber}-{rotationStartDate}.");

                // Update rotation
                log.LogInformation("Updating rotation.");
                var rotationRecordId = req.Headers["Airtable-Record-Id"][0];
                var rotationLookup   = airtableBase.RetrieveRecord("Rotations", rotationRecordId).GetAwaiter().GetResult();
                if (!rotationLookup.Success)
                {
                    log.LogError(rotationLookup.AirtableApiError.ErrorMessage);
                    return(new StatusCodeResult(500));
                }
                log.LogInformation("Looked up rotation successfully.");
                var rotationFields = new Fields();
                rotationFields.AddField("Rotation #", rotationNumber);
                rotationFields.AddField("Date", rotationStartDate);
                var rotationUpdate = airtableBase.UpdateRecord("People", rotationFields, rotationRecordId).GetAwaiter().GetResult();
                if (!rotationUpdate.Success)
                {
                    log.LogError(rotationUpdate.AirtableApiError.ErrorMessage);
                    return(new StatusCodeResult(500));
                }
                log.LogInformation("Updated rotation successfully.");

                // Add flight attendants
                for (int i = 0; i < int.Parse(rotationNumberOfAttendants); i++)
                {
                    log.LogInformation($"Starting to process flight attendant {i}.");
                    var flightAttendantRecord = new Regex($@"^{Convert.ToChar(65 + i)} 0([0-9]*) ([A-Za-z]*)([A-Za-z ]*)", RegexOptions.Multiline).Match(rotation);
                    var faEmployeeId          = int.Parse(flightAttendantRecord.Groups[1].Value);

                    var faLookup = airtableBase.ListRecords("People", null, null, $"{{Employee ID}} = {faEmployeeId}").GetAwaiter().GetResult();

                    if (!faLookup.Success)
                    {
                        log.LogError(faLookup.AirtableApiError.ErrorMessage);
                        return(new StatusCodeResult(500));
                    }
                    log.LogInformation($"Looked up flight attendant {faLookup} successfully.");

                    if (!faLookup.Records.Any())
                    {
                        log.LogInformation("Adding flight attendant.");
                        var fields = new Fields();
                        fields.AddField("Employee ID", faEmployeeId);
                        fields.AddField("First name", flightAttendantRecord.Groups[2].Value);
                        fields.AddField("Last name", flightAttendantRecord.Groups[3].Value);
                        var result = airtableBase.CreateRecord("People", fields).GetAwaiter().GetResult();
                        if (!result.Success)
                        {
                            log.LogError(result.AirtableApiError.ErrorMessage);
                            return(new StatusCodeResult(500));
                        }
                        log.LogInformation("Added flight attendant successfully.");
                    }
                    else
                    {
                        log.LogInformation("Flight attendant already registered.");
                    }
                }
            }
            return((ActionResult) new OkResult());
        }
Пример #23
0
        public static void ExtractSelectFeatureFormLayer(IFeatureLayer ifeatureLayer_0,
                                                         IFeatureWorkspace ifeatureWorkspace_0, IGeometry igeometry_0)
        {
            IEnumFieldError enumFieldError;
            IFields         field;
            string          str;
            ICursor         cursor;

            try
            {
                IFeatureSelection ifeatureLayer0 = (IFeatureSelection)ifeatureLayer_0;
                if (ifeatureLayer0.SelectionSet.Count != 0)
                {
                    IFeatureClass featureClass      = ifeatureLayer_0.FeatureClass;
                    IFields       fields            = featureClass.Fields;
                    IFieldChecker fieldCheckerClass = new FieldChecker()
                    {
                        InputWorkspace    = (featureClass as IDataset).Workspace,
                        ValidateWorkspace = ifeatureWorkspace_0 as IWorkspace
                    };
                    fieldCheckerClass.Validate(fields, out enumFieldError, out field);
                    enumFieldError.Reset();
                    IFieldError fieldError = enumFieldError.Next();
                    string      str1       = "";
                    while (fieldError != null)
                    {
                        fieldError.FieldError.ToString();
                        IField   field1 = fields.Field[fieldError.FieldIndex];
                        IField   field2 = field.Field[fieldError.FieldIndex];
                        string   str2   = str1;
                        string[] name   = new string[] { str2, field2.Name, " reason: ", field1.Name, "  " };
                        str1       = string.Concat(name);
                        fieldError = enumFieldError.Next();
                    }
                    Hashtable hashtables = new Hashtable();
                    string    name1      = ifeatureLayer_0.Name;
                    char      chr        = name1[0];
                    if ((chr < '0' ? false : chr <= '9'))
                    {
                        name1 = string.Concat("A", name1);
                    }
                    fieldCheckerClass.ValidateTableName(name1, out str);
                    name1 = str;
                    string      name2       = "";
                    IFieldsEdit fieldsClass = new Fields() as IFieldsEdit;
                    for (int i = field.FieldCount - 1; i >= 0; i--)
                    {
                        IField field3 = field.Field[i];
                        if (field3.Type == esriFieldType.esriFieldTypeGeometry)
                        {
                            name2 = field3.Name;
                            IGeometryDef      geometryDef      = field3.GeometryDef;
                            ISpatialReference spatialReference =
                                (geometryDef.SpatialReference as IClone).Clone() as ISpatialReference;
                            SpatialReferenctOperator.ChangeCoordinateSystem(ifeatureWorkspace_0 as IGeodatabaseRelease,
                                                                            spatialReference, false);
                            (geometryDef as IGeometryDefEdit).SpatialReference_2 = spatialReference;
                            (field3 as IFieldEdit).GeometryDef_2 = geometryDef;
                        }
                        if ((ifeatureWorkspace_0 as IWorkspace).Type != esriWorkspaceType.esriFileSystemWorkspace)
                        {
                            fieldsClass.AddField(field3);
                        }
                        else if (field3.Type != esriFieldType.esriFieldTypeBlob)
                        {
                            fieldsClass.AddField(field3);
                        }
                    }
                    IFeatureClass featureClass1 = null;
                    try
                    {
                        featureClass1 = ifeatureWorkspace_0.CreateFeatureClass(name1, fieldsClass, null, null,
                                                                               esriFeatureType.esriFTSimple, name2, "");
                    }
                    catch (Exception exception)
                    {
                        MessageBox.Show("无法创建输出要素类!");
                        return;
                    }
                    IFeatureCursor featureCursor  = null;
                    IFeatureCursor featureCursor1 = featureClass1.Insert(true);
                    IFeatureBuffer featureBuffer  = featureClass1.CreateFeatureBuffer();
                    ifeatureLayer0.SelectionSet.Search(null, false, out cursor);
                    featureCursor = (IFeatureCursor)cursor;
                    for (IFeature j = featureCursor.NextFeature(); j != null; j = featureCursor.NextFeature())
                    {
                        if (j.Shape != null)
                        {
                            Clip.InsertFeature(featureCursor1, featureBuffer, field, j, j.Shape, igeometry_0);
                        }
                    }
                    featureCursor1.Flush();
                    Marshal.ReleaseComObject(featureBuffer);
                    featureBuffer = null;
                    Marshal.ReleaseComObject(featureCursor1);
                    featureCursor1 = null;
                }
            }
            catch
            {
            }
        }
Пример #24
0
        async private void AirtableSendRecords()
        {
            int RecordCount  = 0;
            int NewCount     = 0;
            int UpdatedCount = 0;

            using (AirtableBase airtableBase = new AirtableBase(App.AirtableKey, App.AirtableBase))
            {
                List <Fields>   newRecordList     = new List <Fields>();
                List <IdFields> updatedRecordList = new List <IdFields>();
                foreach (EventTeamMatch match in App.Database.GetEventTeamMatchesAsync().Result)
                {
                    // only send matches from this event
                    if (match.EventKey != App.currFRCEventKey)
                    {
                        continue;
                    }
                    // only send matches from this device
                    if (match.DeviceName != App.KindleName)
                    {
                        continue;
                    }
                    RecordCount++;
                    if (string.IsNullOrEmpty(match.AirtableId))
                    {
                        Fields  fields = new Fields();
                        JObject jo     = match.ToJson();
                        foreach (KeyValuePair <string, object> kv in jo.ToList())
                        {
                            if (kv.Key == "Id" || kv.Key == "AirtableId")
                            {
                                continue;
                            }
                            fields.AddField(kv.Key, kv.Value);
                        }
                        newRecordList.Add(fields);
                    }
                    else
                    {
                        if (match.Changed % 2 == 0) // even, don't upload
                        {
                            continue;
                        }
                        match.Changed++; // make even
                        IdFields fields = new IdFields(match.AirtableId.ToString());
                        JObject  jo     = match.ToJson();
                        foreach (KeyValuePair <string, object> kv in jo.ToList())
                        {
                            if (kv.Key == "Id" || kv.Key == "AirtableId")
                            {
                                continue;
                            }
                            fields.AddField(kv.Key, kv.Value);
                        }
                        updatedRecordList.Add(fields);
                    }
                }
                if (newRecordList.Count > 0)
                {
                    int tempCount = await AirtableSendNewRecords(airtableBase, newRecordList);

                    if (tempCount < 0)
                    {
                        return; // error, exit out
                    }
                    NewCount += tempCount;
                }
                if (updatedRecordList.Count > 0)
                {
                    int tempCount = await AirtableSendUpdatedRecords(airtableBase, updatedRecordList);

                    if (tempCount < 0)
                    {
                        return; // error, exit out
                    }
                    UpdatedCount += tempCount;
                }
            }
            Label_Results.Text  = $"Records found: {RecordCount}\r\n";
            Label_Results.Text += $"New records: {NewCount}\r\n";
            Label_Results.Text += $"Updated records: {UpdatedCount}";
        }
Пример #25
0
        public static async Task ReportScores(Set set, double gain, double loss)
        {
            using (AirtableBase airtableBase = new AirtableBase(Globals.BotSettings.AppKey, Globals.BotSettings.BaseId))
            {
                Fields fields = new Fields();

                string[] alphaPlayers = set.AlphaTeam.Players.Select(e => e.AirtableId).ToArray();
                string[] bravoPlayers = set.BravoTeam.Players.Select(e => e.AirtableId).ToArray();

                fields.AddField("Date", DateTime.Now);
                fields.AddField("Alpha Players", alphaPlayers);
                fields.AddField("Bravo Players", bravoPlayers);
                fields.AddField("Alpha Score", set.AlphaTeam.Score);
                fields.AddField("Bravo Score", set.BravoTeam.Score);
                fields.AddField("Gain", gain);
                fields.AddField("Loss", loss);
                fields.AddField("A SZ",
                                set.AlphaTeam.OrderedMatchResults
                                .Select((e, index) => new { Score = e, set.Stages[index].Mode })
                                .Where(e => e.Score == 1 && e.Mode == GameMode.SplatZones)
                                .Aggregate(0, (e, f) => e + f.Score));
                fields.AddField("B SZ",
                                set.BravoTeam.OrderedMatchResults
                                .Select((e, index) => new { Score = e, set.Stages[index].Mode })
                                .Where(e => e.Score == 1 && e.Mode == GameMode.SplatZones)
                                .Aggregate(0, (e, f) => e + f.Score));
                fields.AddField("A TC",
                                set.AlphaTeam.OrderedMatchResults
                                .Select((e, index) => new { Score = e, set.Stages[index].Mode })
                                .Where(e => e.Score == 1 && e.Mode == GameMode.TowerControl)
                                .Aggregate(0, (e, f) => e + f.Score));
                fields.AddField("B TC",
                                set.BravoTeam.OrderedMatchResults
                                .Select((e, index) => new { Score = e, set.Stages[index].Mode })
                                .Where(e => e.Score == 1 && e.Mode == GameMode.TowerControl)
                                .Aggregate(0, (e, f) => e + f.Score));
                fields.AddField("A RM",
                                set.AlphaTeam.OrderedMatchResults
                                .Select((e, index) => new { Score = e, set.Stages[index].Mode })
                                .Where(e => e.Score == 1 && e.Mode == GameMode.Rainmaker)
                                .Aggregate(0, (e, f) => e + f.Score));
                fields.AddField("B RM",
                                set.BravoTeam.OrderedMatchResults
                                .Select((e, index) => new { Score = e, set.Stages[index].Mode })
                                .Where(e => e.Score == 1 && e.Mode == GameMode.Rainmaker)
                                .Aggregate(0, (e, f) => e + f.Score));
                fields.AddField("A CB",
                                set.AlphaTeam.OrderedMatchResults
                                .Select((e, index) => new { Score = e, set.Stages[index].Mode })
                                .Where(e => e.Score == 1 && e.Mode == GameMode.ClamBlitz)
                                .Aggregate(0, (e, f) => e + f.Score));
                fields.AddField("B CB",
                                set.BravoTeam.OrderedMatchResults
                                .Select((e, index) => new { Score = e, set.Stages[index].Mode })
                                .Where(e => e.Score == 1 && e.Mode == GameMode.ClamBlitz)
                                .Aggregate(0, (e, f) => e + f.Score));

                await airtableBase.CreateRecord("Draft Log", fields, true);
            }
        }
Пример #26
0
        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;
                }
            }
        }
Пример #27
0
        private void simpleButton1_Click(object sender, EventArgs e)
        {
            if (Validate(true) == false)
            {
                return;
            }
            string locType = label1.Tag != null?label1.Tag.ToString() : "";

            if (string.IsNullOrEmpty(locType))
            {
                return;
            }
            object          createLoc;
            IWorkspace2     workspace2 = null;
            IObjectTemplate template   = null;

            if (_isSingle)
            {
                template = _template;
            }
            else
            {
                template = _plugin.TemplateDatabase.Templates.FirstOrDefault(c => c.Name == cmbTemplate.SelectedItem.ToString());
            }

            if (template == null)
            {
                return;
            }
            if (locType.Contains("Dataset"))
            {
                IGxDataset      pDataset = txtDB.Tag as IGxDataset;
                IFeatureDataset fDataset = ((IGxObject)pDataset).InternalObjectName.Open();
                workspace2 = fDataset.Workspace as IWorkspace2;
                createLoc  = fDataset;
            }
            else
            {
                IGxDatabase       pDatabase = txtDB.Tag as IGxDatabase;
                IFeatureWorkspace workspace = ((IGxObject)pDatabase).InternalObjectName.Open();
                workspace2 = workspace as IWorkspace2;
                createLoc  = workspace;
            }

            if (createLoc == null)
            {
                return;
            }
            string      fcName     = txtName.EditValue.ToString().Trim();
            IWorkspace2 workSpace2 = createLoc is IFeatureDataset
                ? ((IFeatureDataset)createLoc).Workspace as IWorkspace2
                : createLoc as IWorkspace2;

            if (workSpace2.NameExists[esriDatasetType.esriDTFeatureClass, fcName])
            {
                MessageService.Current.Warn("该名称已经存在,请重新输入!");
                return;
            }
            ISpatialReference pSpatialReference = _map.SpatialReference;

            IFieldsEdit pFieldsEdit = new Fields() as IFieldsEdit;
            IField      pField      = FieldHelper.CreateOIDField();

            pFieldsEdit.AddField(pField);
            if (locType.Contains("Dataset"))
            {
                IGeoDataset pFDataset = createLoc as IGeoDataset;
                pField            = FieldHelper.CreateGeometryField(template.GeometryType, pFDataset.SpatialReference);
                pSpatialReference = pFDataset.SpatialReference;
                pFieldsEdit.AddField(pField);
            }
            else
            {
                pField = FieldHelper.CreateGeometryField(template.GeometryType, _map.SpatialReference);
                pFieldsEdit.AddField(pField);
            }
            string keyName = "";

            foreach (YTField ytField in template.Fields)
            {
                pField = ytField.CreateField();
                pFieldsEdit.AddField(pField);
                if (ytField.IsKey)
                {
                    keyName = ytField.Name;
                }
            }

            IFeatureClass pClass = WorkspaceOperator.CreateFeatureClass(createLoc, txtName.Text, pSpatialReference, template.FeatureType,
                                                                        template.GeometryType, (IFields)pFieldsEdit, null, null, "");

            if (pClass == null)
            {
                MessageService.Current.Info("创建失败!");
                return;
            }
            if (pClass != null && chkIndex.Checked == false)
            {
                MapHelper.AddFeatureLayer((IBasicMap)_map, pClass);
                MessageService.Current.Info("创建成功并已经加载图层!");
                DialogResult = DialogResult.OK;
                return;
            }
            IEnvelope pEnv = new Envelope() as IEnvelope;

            pEnv.PutCoords(Convert.ToDouble(txtXMin.Text), Convert.ToDouble(txtYMin.Text), Convert.ToDouble(txtXMax.Text), Convert.ToDouble(txtYMax.Text));

            IWorkspaceEdit pWksEdit = ((IDataset)pClass).Workspace as IWorkspaceEdit;

            pWksEdit.StartEditing(false);
            pWksEdit.StartEditOperation();
            IndexHelper.CreateGridIndex(pClass, pEnv, Convert.ToDouble(txtWidth.Text),
                                        Convert.ToDouble(txtHeight.Text), keyName);
            pWksEdit.StopEditOperation();
            pWksEdit.StopEditing(true);
            MapHelper.AddFeatureLayer((IBasicMap)_map, pClass);
            MessageService.Current.Info("创建成功并已经加载图层!");
            DialogResult = DialogResult.OK;
        }
Пример #28
0
 public static void ExtractSelectFeatureFormLayer(IFeatureLayer ifeatureLayer_0,
                                                  IFeatureWorkspace ifeatureWorkspace_0, IGeometry igeometry_0)
 {
     try
     {
         IFeatureSelection featureSelection = (IFeatureSelection)ifeatureLayer_0;
         if (featureSelection.SelectionSet.Count != 0)
         {
             IFeatureClass featureClass = ifeatureLayer_0.FeatureClass;
             IFields       fields       = featureClass.Fields;
             IFieldChecker fieldChecker = new FieldChecker();
             fieldChecker.InputWorkspace    = (featureClass as IDataset).Workspace;
             fieldChecker.ValidateWorkspace = (ifeatureWorkspace_0 as IWorkspace);
             IEnumFieldError enumFieldError;
             IFields         fields2;
             fieldChecker.Validate(fields, out enumFieldError, out fields2);
             enumFieldError.Reset();
             IFieldError fieldError = enumFieldError.Next();
             string      text       = "";
             while (fieldError != null)
             {
                 fieldError.FieldError.ToString();
                 IField field  = fields.get_Field(fieldError.FieldIndex);
                 IField field2 = fields2.get_Field(fieldError.FieldIndex);
                 string text2  = text;
                 text = string.Concat(new string[]
                 {
                     text2,
                     field2.Name,
                     " reason: ",
                     field.Name,
                     "  "
                 });
                 fieldError = enumFieldError.Next();
             }
             new Hashtable();
             string text3 = ifeatureLayer_0.Name;
             string text4;
             fieldChecker.ValidateTableName(text3, out text4);
             text3 = text4;
             string      shapeFieldName = "";
             IFieldsEdit fieldsEdit     = new Fields() as IFieldsEdit;
             for (int i = fields2.FieldCount - 1; i >= 0; i--)
             {
                 IField field3 = fields2.get_Field(i);
                 if (field3.Type == esriFieldType.esriFieldTypeGeometry)
                 {
                     shapeFieldName = field3.Name;
                     IGeometryDef      geometryDef      = field3.GeometryDef;
                     ISpatialReference spatialReference =
                         (geometryDef.SpatialReference as IClone).Clone() as ISpatialReference;
                     SpatialReferenctOperator.ChangeCoordinateSystem(ifeatureWorkspace_0 as IGeodatabaseRelease,
                                                                     spatialReference, false);
                     (geometryDef as IGeometryDefEdit).SpatialReference_2 = spatialReference;
                     (field3 as IFieldEdit).GeometryDef_2 = geometryDef;
                 }
                 if ((ifeatureWorkspace_0 as IWorkspace).Type == esriWorkspaceType.esriFileSystemWorkspace)
                 {
                     if (field3.Type != esriFieldType.esriFieldTypeBlob)
                     {
                         fieldsEdit.AddField(field3);
                     }
                 }
                 else
                 {
                     fieldsEdit.AddField(field3);
                 }
             }
             IFeatureClass featureClass2 = null;
             try
             {
                 featureClass2 = ifeatureWorkspace_0.CreateFeatureClass(text3, fieldsEdit, null, null,
                                                                        esriFeatureType.esriFTSimple, shapeFieldName, "");
             }
             catch (Exception)
             {
                 System.Windows.Forms.MessageBox.Show("无法创建输出要素类!");
                 return;
             }
             IFeatureCursor featureCursor = featureClass2.Insert(true);
             IFeatureBuffer featureBuffer = featureClass2.CreateFeatureBuffer();
             ICursor        cursor;
             featureSelection.SelectionSet.Search(null, false, out cursor);
             IFeatureCursor featureCursor2 = (IFeatureCursor)cursor;
             for (IFeature feature = featureCursor2.NextFeature();
                  feature != null;
                  feature = featureCursor2.NextFeature())
             {
                 if (feature.Shape != null)
                 {
                     ClipHelper.InsertFeature(featureCursor, featureBuffer, fields2, feature, feature.Shape,
                                              igeometry_0);
                 }
             }
             featureCursor.Flush();
             Marshal.ReleaseComObject(featureBuffer);
             Marshal.ReleaseComObject(featureCursor);
         }
     }
     catch
     {
     }
 }
Пример #29
0
        public async Task CreateUserProfile(UserObject data)
        {
            Fields field = new Fields();

            field.AddField("ID", data.Id);
            field.AddField("Disable", data.Disable);
            field.AddField("balance", data.Balance);
            field.AddField("xp", data.Xp);
            field.AddField("level", data.Level);
            field.AddField("votes", data.Votes);
            field.AddField("description", data.Description);
            field.AddField("background", data.Background);
            field.AddField("birthday", data.Birthday);
            field.AddField("marry", data.Marry);
            field.AddField("ownBgName", data.OwnBgNames);
            field.AddField("ownBgUrl", data.OwnBgUrl);
            field.AddField("weekly", data.OwnBgNames);

            await Base.CreateRecord(table, field);
        }
Пример #30
0
        private IFields GetFields(esriGeometryType geomType, IDomain domain)
        {
            IFieldsEdit fields = new Fields() as IFieldsEdit;
            IFieldEdit  field  = new Field() as IFieldEdit;

            field.AliasName_2 = "Feature ID";
            field.Name_2      = "FeatureID";
            field.Type_2      = esriFieldType.esriFieldTypeString;
            field.Length_2    = 100;

            fields.AddField(field);
            field = new Field() as IFieldEdit;

            field.AliasName_2 = "Feature ID Field";
            field.Name_2      = "FeatureIDField";
            field.Type_2      = esriFieldType.esriFieldTypeString;
            field.Length_2    = 100;

            fields.AddField(field);
            field = new Field() as IFieldEdit;

            field.AliasName_2 = "Job ID";
            field.Name_2      = "JobID";
            field.Type_2      = esriFieldType.esriFieldTypeInteger;
            field.Precision_2 = 10;

            fields.AddField(field);
            field = new Field() as IFieldEdit;

            field.AliasName_2 = "Logged By";
            field.Name_2      = "LoggedBy";
            field.Type_2      = esriFieldType.esriFieldTypeString;
            field.Length_2    = 100;

            fields.AddField(field);
            field = new Field() as IFieldEdit;

            field.AliasName_2 = "Table Name";
            field.Name_2      = "TableName";
            field.Type_2      = esriFieldType.esriFieldTypeString;
            field.Length_2    = 100;

            fields.AddField(field);
            field = new Field() as IFieldEdit;

            field.AliasName_2 = "Transaction Type";
            field.Name_2      = "TransactionType";
            field.Type_2      = esriFieldType.esriFieldTypeInteger;
            field.Domain_2    = domain;

            fields.AddField(field);
            field = new Field() as IFieldEdit;

            field.AliasName_2 = "Transaction Date";
            field.Name_2      = "TransactionDate";
            field.Type_2      = esriFieldType.esriFieldTypeDate;

            fields.AddField(field);
            field = new Field() as IFieldEdit;

            field.AliasName_2 = "Attributes";
            field.Name_2      = "Attributes";
            field.Type_2      = esriFieldType.esriFieldTypeString;
            field.Length_2    = 5000;

            fields.AddField(field);
            field = new Field() as IFieldEdit;

            field.AliasName_2 = "Session ID";
            field.Name_2      = "SessionID";
            field.Type_2      = esriFieldType.esriFieldTypeInteger;
            field.Precision_2 = 10;

            fields.AddField(field);
            field = new Field() as IFieldEdit;

            IGeometryDefEdit geomDef = new GeometryDef() as IGeometryDefEdit;

            geomDef.GeometryType_2     = geomType;
            geomDef.SpatialReference_2 = GetSpatialReference();
            geomDef.HasM_2             = false;
            geomDef.HasZ_2             = false;

            field.Name_2        = "SHAPE";
            field.Type_2        = esriFieldType.esriFieldTypeGeometry;
            field.GeometryDef_2 = geomDef;

            fields.AddField(field);

            return(fields);
        }