예제 #1
0
        /// <summary>
        /// This Delete request.
        /// </summary>
        /// <param name="restRequest">SugarCRM Rest request parameters.</param>
        /// <returns>The task response object.</returns>
        public static Task <RestResponse> Delete(RestRequest restRequest)
        {
            return(Task.Run(() =>
            {
                var response = new RestResponse();

                var request = new SugarRestRequest();
                request.RequestType = RequestType.Delete;
                request.ModuleName = restRequest.ModelInfo.ModelName;
                request.Url = restRequest.Account.Url;
                request.Username = restRequest.Account.Username;
                request.Password = restRequest.Account.Password;

                request.Parameter = restRequest.Id;

                var client = new SugarRestClient();
                SugarRestResponse sugarRestResponse = client.Execute(request);

                response.Id = (string)sugarRestResponse.Data;
                response.JsonRawRequest = JToken.Parse(sugarRestResponse.JsonRawRequest).ToString(Newtonsoft.Json.Formatting.Indented);
                response.JsonRawResponse = JToken.Parse(sugarRestResponse.JsonRawResponse).ToString(Newtonsoft.Json.Formatting.Indented);

                return response;
            }));
        }
예제 #2
0
        /*  Remove comment to test.
         * [Fact]
         */
        public async void WikiReadContactsByPageAsyncTest()
        {
            // using SugarRestSharp;

            string url      = "http://191.101.224.189/sugar/service/v4_1/rest.php";
            string username = "******";
            string password = "******";

            var client  = new SugarRestClient(url, username, password);
            var request = new SugarRestRequest(RequestType.PagedRead);

            // Select fields.
            List <string> selectFields = new List <string>();

            selectFields.Add(nameof(Contact.FirstName));

            // You can mix C# type and json type.
            selectFields.Add("last_name");

            request.Options.SelectFields = selectFields;

            // Sets page options
            request.Options.CurrentPage   = 1;
            request.Options.NumberPerPage = 10;
            SugarRestResponse response = await client.ExecuteAsync <Contact>(request);

            List <Contact> cases = (List <Contact>)response.Data;
            // -------------------End Bulk Read Account-------------------
        }
예제 #3
0
        public async void ReadBulkAsyncWithQueryTest()
        {
            var client = new SugarRestClient(TestAccount.Url, TestAccount.Username, TestAccount.Password);

            // -------------------Bulk Read Account-------------------
            int count = 25;

            var request = new SugarRestRequest("Cases", RequestType.BulkRead);

            request.Options.QueryPredicates = new List <QueryPredicate>();
            request.Options.QueryPredicates.Add(new QueryPredicate(nameof(Case.Name), QueryOperator.StartsWith, "Warning"));
            request.Options.QueryPredicates.Add(new QueryPredicate(nameof(Case.Name), QueryOperator.Contains, "message"));
            request.Options.QueryPredicates.Add(new QueryPredicate(nameof(Case.Status), QueryOperator.Equal, "Assigned"));
            DateTime date = DateTime.Parse("07/02/2016");

            request.Options.QueryPredicates.Add(new QueryPredicate(nameof(Case.DateEntered), QueryOperator.Between, null, date.AddDays(-1), DateTime.Now));
            request.Options.MaxResult = count;

            SugarRestResponse response = await client.ExecuteAsync <Case>(request);

            Assert.NotNull(response);
            Assert.Equal(response.StatusCode, HttpStatusCode.OK);

            List <Case> readACases = (List <Case>)response.Data;

            Assert.NotNull(readACases);
            Assert.True(readACases.Count <= count);
            Assert.True(readACases.All(x => x.Name.StartsWith("Warning")));
            Assert.True(readACases.All(x => x.Name.Contains("message")));
            Assert.True(readACases.All(x => x.Status == "Assigned"));

            // -------------------End Bulk Read Account-------------------
        }
예제 #4
0
        /*  Remove comment to test.
         * [Fact]
         */
        public async void WikiReadCasesWithQueryPredicatesTest()
        {
            string url      = "http://191.101.224.189/sugar/service/v4_1/rest.php";
            string username = "******";
            string password = "******";

            var client = new SugarRestClient(url, username, password);

            var request = new SugarRestRequest(RequestType.BulkRead);

            request.Options.MaxResult = 3;

            request.Options.QueryPredicates = new List <QueryPredicate>();
            request.Options.QueryPredicates.Add(new QueryPredicate(nameof(Case.Name), QueryOperator.StartsWith, "Warning"));
            request.Options.QueryPredicates.Add(new QueryPredicate("name", QueryOperator.Contains, "message"));
            request.Options.QueryPredicates.Add(new QueryPredicate(nameof(Case.Status), QueryOperator.Equal, "Assigned"));
            DateTime date = DateTime.Parse("07/02/2016");

            request.Options.QueryPredicates.Add(new QueryPredicate(nameof(Case.DateEntered), QueryOperator.Between, null, date.AddDays(-1), DateTime.Now));

            SugarRestResponse response = await client.ExecuteAsync <Case>(request);

            List <Case> cases = (List <Case>)response.Data;
            // -------------------End Bulk Read Account-------------------
        }
        public void ReadByTypeJDataTest()
        {
            var client = new SugarRestClient(TestAccount.Url, TestAccount.Username, TestAccount.Password);

            Account insertAccount = AccountsModule.GetTestAccount();

            // -------------------Create Account-------------------
            SugarRestResponse response = AccountsModule.CreateAccountByType(client, insertAccount);

            Assert.NotNull(response);
            Assert.Equal(response.StatusCode, HttpStatusCode.OK);

            string insertId = (response.Data == null) ? string.Empty : response.Data.ToString();

            Assert.NotNull(insertId);
            Assert.NotEmpty(insertId);
            // -------------------End Create Account-------------------


            // -------------------Read Account-------------------
            response = AccountsModule.ReadAccountByType(client, insertId);

            Assert.NotNull(response);
            Assert.Equal(response.StatusCode, HttpStatusCode.OK);
            Assert.NotNull(response.JData);
            Assert.NotEmpty(response.JData);

            JObject jobject = JObject.Parse(response.JData);

            Assert.NotNull(jobject);

            var           jproperties    = jobject.Properties().ToList();
            List <string> selectedFields = AccountsModule.GetJsonSelectedField();

            Assert.Equal(selectedFields.Count, jproperties.Count);

            foreach (string id in selectedFields)
            {
                JProperty property = jproperties.SingleOrDefault(p => p.Name == id);
                Assert.NotNull(property);
            }

            Account readOnCreateAccount = (Account)response.Data;

            // -------------------End Read Account-------------------


            // -------------------Delete Account-------------------
            response = AccountsModule.DeleteAccountByType(client, readOnCreateAccount.Id);

            Assert.NotNull(response);
            Assert.Equal(response.StatusCode, HttpStatusCode.OK);

            string deleteId = (response.Data == null) ? string.Empty : response.Data.ToString();

            Assert.NotNull(deleteId);
            Assert.NotEmpty(deleteId);
            Assert.Equal(insertId, deleteId);
            // -------------------End Delete Account-------------------
        }
예제 #6
0
        /*  Remove comment to test.
         * [Fact]
         */
        public void WikiDeleteEntitiesTest()
        {
            // using SugarRestSharp;
            // using CustomModels;
            // using Newtonsoft.Json;

            string url      = "http://191.101.224.189/sugar/service/v4_1/rest.php";
            string username = "******";
            string password = "******";

            var client = new SugarRestClient(url, username, password);

            string moduleName = "Accounts";
            var    request    = new SugarRestRequest(moduleName, RequestType.Delete);

            List <string> itemIdsToDelete = new List <string>();

            itemIdsToDelete.Add("45ac2050-d55e-70ab-6520-585337eac1bc");
            itemIdsToDelete.Add("698e4f22-a213-d287-94be-584c09710444");
            itemIdsToDelete.Add("fb7405da-fe66-f0f9-f5d4-58533747bdf8");

            foreach (var id in itemIdsToDelete)
            {
                request.Parameter = id;
                SugarRestResponse response      = client.Execute <Account>(request);
                string            deletedItemId = (string)response.Data;
            }
        }
예제 #7
0
        /*  Remove comment to test.
         * [Fact]
         */
        public async void WikiReadLeadsWithQueryTest()
        {
            string url      = "http://191.101.224.189/sugar/service/v4_1/rest.php";
            string username = "******";
            string password = "******";

            var client = new SugarRestClient(url, username, password);

            var request = new SugarRestRequest(RequestType.BulkRead);

            List <string> selectedFields = new List <string>();

            selectedFields.Add("id");
            selectedFields.Add("name");
            selectedFields.Add("modified_by_name");

            request.Options.SelectFields = selectedFields;

            // Set query
            request.Options.Query = "leads.id IN('10d82d59-08eb-8f0d-28e0-5777b57af47c', '12037cd0-ead2-402e-e1d0-5777b5dfb965', '13d4109d-c5ca-7dd1-99f1-5777b57ef30f', '14c136e5-1a67-eeba-581c-5777b5c8c463', '14e4825e-9573-4d75-2dbe-5777b5b7ee85', '1705b33a-3fad-aa70-77ef-5777b5b081f1', '171c1d8b-e34f-3a1f-bef7-5777b5ecc823', '174a8fc4-56e6-3471-46d8-5777b565bf5b', '17c9c496-90a1-02f5-87bd-5777b51ab086', '1d210352-7a1f-2c5d-04ae-5777b5a3312f')";

            SugarRestResponse response = await client.ExecuteAsync <Lead>(request);

            List <Lead> leads = (List <Lead>)response.Data;
            // -------------------End Bulk Read Account-------------------
        }
예제 #8
0
        /*  Remove comment to test.
         * [Fact]
         */
        public void WikiCreateBugTest()
        {
            // using SugarRestSharp;

            string url      = "http://191.101.224.189/sugar/service/v4_1/rest.php";
            string username = "******";
            string password = "******";

            string moduleName = "Bugs";

            var client  = new SugarRestClient(url, username, password);
            var request = new SugarRestRequest(moduleName, RequestType.Create);

            Bug bugToCreate = new Bug();

            bugToCreate.Name        = "System crashed while running count query";
            bugToCreate.Description = "New Oracle application server commissioning.";
            bugToCreate.Status      = "New";

            request.Parameter = bugToCreate;

            // Select fields.
            List <string> selectFields = new List <string>();

            selectFields.Add(nameof(Bug.Name));
            selectFields.Add(nameof(Bug.Description));
            selectFields.Add(nameof(Bug.Status));

            request.Options.SelectFields = selectFields;

            SugarRestResponse response = client.Execute(request);

            string bugId = (string)response.Data;
            // -------------------End Bulk Read Account-------------------
        }
예제 #9
0
        public void ReadBulkWithQuery1Test()
        {
            var client = new SugarRestClient(TestAccount.Url, TestAccount.Username, TestAccount.Password);

            // -------------------Bulk Read Account-------------------
            int count = 10;

            var request = new SugarRestRequest("Accounts", RequestType.BulkRead);

            request.Options.Query           = "accounts.name = 'Air Safety Inc' ";
            request.Options.QueryPredicates = new List <QueryPredicate>();
            request.Options.QueryPredicates.Add(new QueryPredicate(nameof(Account.Name), QueryOperator.Equal, "General Electric USA, Inc"));
            request.Options.MaxResult = count;

            SugarRestResponse response = client.Execute(request);

            Assert.NotNull(response);
            Assert.Equal(response.StatusCode, HttpStatusCode.OK);

            List <Account> readAccounts = (List <Account>)(response.Data);

            Assert.NotNull(readAccounts);
            Assert.True(readAccounts.All(x => x.Name == "Air Safety Inc"));
            // -------------------End Bulk Read Account-------------------
        }
예제 #10
0
        /// <summary>
        /// This GetById request.
        /// </summary>
        /// <param name="restRequest">SugarCRM Rest request parameters.</param>
        /// <returns>The task response object.</returns>
        public static Task <RestResponse> GetById(RestRequest restRequest)
        {
            return(Task.Run(() =>
            {
                var response = new RestResponse();

                var request = new SugarRestRequest();
                request.RequestType = RequestType.ReadById;
                request.ModuleName = restRequest.ModelInfo.ModelName;
                request.Url = restRequest.Account.Url;
                request.Username = restRequest.Account.Username;
                request.Password = restRequest.Account.Password;

                request.Parameter = restRequest.Id;

                bool selectedFieldsOnly = false;
                var properties = new List <ModelProperty>();
                if (restRequest.SelectFields)
                {
                    if (restRequest.SelectedFields != null && restRequest.SelectedFields.Count > 0)
                    {
                        properties = restRequest.SelectedFields.Select(x => x.Property).ToList();
                        if (properties.Count > 0)
                        {
                            request.Options.SelectFields = properties.Select(x => x.JsonName).ToList();
                            selectedFieldsOnly = true;
                        }
                    }
                }

                var client = new SugarRestClient();
                SugarRestResponse sugarRestResponse = client.Execute(request);

                response.Data = new DataTable();
                if (sugarRestResponse != null)
                {
                    var selectedProperties = new List <string>();

                    if (selectedFieldsOnly)
                    {
                        selectedProperties = properties.Select(x => x.Name).ToList();
                    }

                    if (!string.IsNullOrEmpty(sugarRestResponse.JData))
                    {
                        response.Data = sugarRestResponse.JData.ToDynamicObject(restRequest.ModelInfo.Type, selectedProperties, selectedFieldsOnly);
                    }

                    response.JsonRawRequest = JToken.Parse(sugarRestResponse.JsonRawRequest).ToString(Newtonsoft.Json.Formatting.Indented);
                    response.JsonRawResponse = JToken.Parse(sugarRestResponse.JsonRawResponse).ToString(Newtonsoft.Json.Formatting.Indented);
                }

                return response;
            }));
        }
예제 #11
0
        /*  Remove comment to test.
         * [Fact]
         */
        public void WikiCreateBugsTest()
        {
            // using SugarRestSharp;

            string url      = "http://191.101.224.189/sugar/service/v4_1/rest.php";
            string username = "******";
            string password = "******";

            var client  = new SugarRestClient(url, username, password);
            var request = new SugarRestRequest(RequestType.BulkCreate);

            Bug bugToCreate1 = new Bug();

            bugToCreate1.Name        = "System crashed while running new photo upload.";
            bugToCreate1.Description = "Tumblr app";
            bugToCreate1.Status      = "Pending";

            Bug bugToCreate2 = new Bug();

            bugToCreate2.Name        = "Warning is displayed in file after exporting.";
            bugToCreate2.Description = "";
            bugToCreate2.Status      = "New";

            Bug bugToCreate3 = new Bug();

            bugToCreate3.Name        = "Fatal error during installation.";
            bugToCreate3.Description = "Fifth floor printer.";
            bugToCreate3.Status      = "Closed";

            List <Bug> bugsToCreate = new List <Bug>();

            bugsToCreate.Add(bugToCreate1);
            bugsToCreate.Add(bugToCreate2);
            bugsToCreate.Add(bugToCreate3);

            request.Parameter = bugsToCreate;

            // Select fields.
            List <string> selectFields = new List <string>();

            selectFields.Add(nameof(Bug.Name));
            selectFields.Add(nameof(Bug.Description));
            selectFields.Add(nameof(Bug.Status));

            request.Options.SelectFields = selectFields;

            SugarRestResponse response = client.Execute <Bug>(request);

            List <string> createdBugIds = (List <string>)response.Data;
            // -------------------End Bulk Read Account-------------------
        }
예제 #12
0
        private string GetSugarAccountId(SugarRestResponse response)
        {
            if (response.Data == null)
            {
                return(string.Empty);
            }
            List <Sugar.Account> accounts = (List <Sugar.Account>)response.Data;

            if (accounts.Count == 0)
            {
                return(string.Empty);
            }
            return(accounts[0].Id);
        }
예제 #13
0
        /*  Remove comment to test.
         * [Fact]
         */
        public void WikiReadLinkedAccountCollection2Test()
        {
            // using SugarRestSharp;
            // using CustomModels;
            // using Newtonsoft.Json;

            string url      = "http://191.101.224.189/sugar/service/v4_1/rest.php";
            string username = "******";
            string password = "******";

            var client = new SugarRestClient(url, username, password);

            var request = new SugarRestRequest(RequestType.LinkedBulkRead);

            request.Parameter = null;

            request.Options.MaxResult = 3;

            List <string> selectedFields = new List <string>();

            selectedFields.Add("id");
            selectedFields.Add("name");
            selectedFields.Add("industry");
            selectedFields.Add("website");

            request.Options.SelectFields = selectedFields;

            Dictionary <object, List <string> > linkedListInfo = new Dictionary <object, List <string> >();

            List <string> selectCaseFields = new List <string>();

            selectCaseFields.Add(nameof(Case.AccountId));
            selectCaseFields.Add(nameof(Case.CaseNumber));
            selectCaseFields.Add("description");

            linkedListInfo[typeof(Case)] = selectCaseFields;

            // Get all fields for Bug
            linkedListInfo["Bugs"] = null;

            request.Options.LinkedModules = linkedListInfo;

            SugarRestResponse response = client.Execute <Account>(request);

            // Deserialize json data to custom object
            List <CustomAcccount3> customAccounts = JsonConvert.DeserializeObject <List <CustomAcccount3> >(response.JData);
            // -------------------End Bulk Read Account-------------------
        }
예제 #14
0
        /*  Remove comment to test.
         * [Fact]
         */
        public void WikiReadLinkedAccountCollectionTest()
        {
            // using SugarRestSharp;
            // using CustomModels;
            // using Newtonsoft.Json;

            string url      = "http://191.101.224.189/sugar/service/v4_1/rest.php";
            string username = "******";
            string password = "******";

            var client = new SugarRestClient(url, username, password);

            var request = new SugarRestRequest(RequestType.LinkedBulkRead);

            request.Parameter = null;

            request.Options.MaxResult = 3;

            List <string> selectedFields = new List <string>();

            selectedFields.Add(nameof(Account.Id));
            selectedFields.Add(nameof(Account.Name));
            selectedFields.Add(nameof(Account.Industry));
            selectedFields.Add(nameof(Account.Website));
            selectedFields.Add(nameof(Account.ShippingAddressCity));

            request.Options.SelectFields = selectedFields;

            Dictionary <object, List <string> > linkedListInfo = new Dictionary <object, List <string> >();

            List <string> selectContactFields = new List <string>();

            selectContactFields.Add(nameof(Contact.FirstName));
            selectContactFields.Add(nameof(Contact.LastName));
            selectContactFields.Add(nameof(Contact.Title));
            selectContactFields.Add(nameof(Contact.Description));
            selectContactFields.Add(nameof(Contact.PrimaryAddressPostalcode));

            linkedListInfo[typeof(Contact)] = selectContactFields;

            request.Options.LinkedModules = linkedListInfo;

            SugarRestResponse response = client.Execute <Account>(request);

            // Deserialize json data to custom object
            List <CustomAcccount2> customAccounts = JsonConvert.DeserializeObject <List <CustomAcccount2> >(response.JData);
            // -------------------End Bulk Read Account-------------------
        }
예제 #15
0
        public async void ReadAsyncTest()
        {
            var client = new SugarRestClient(TestAccount.Url, TestAccount.Username, TestAccount.Password);

            Account insertAccount = AccountsModule.GetTestAccount();

            // -------------------Create Account-------------------
            SugarRestResponse response = await AccountsModule.CreateAccountAsync(client, insertAccount);

            Assert.NotNull(response);
            Assert.Equal(response.StatusCode, HttpStatusCode.OK);

            string insertId = (response.Data == null) ? string.Empty : response.Data.ToString();

            Assert.NotNull(insertId);
            Assert.NotEmpty(insertId);
            // -------------------End Create Account-------------------


            // -------------------Read Account-------------------
            response = await AccountsModule.ReadAccountAsync(client, insertId);

            Assert.NotNull(response);
            Assert.Equal(response.StatusCode, HttpStatusCode.OK);

            Account readOnCreateAccount = (Account)response.Data;

            Assert.NotNull(readOnCreateAccount);
            Assert.Equal(insertAccount.Name, readOnCreateAccount.Name);
            Assert.Equal(insertAccount.Industry, readOnCreateAccount.Industry);
            Assert.Equal(insertAccount.Website, readOnCreateAccount.Website);
            Assert.Equal(insertAccount.ShippingAddressCity, readOnCreateAccount.ShippingAddressCity);
            // -------------------End Read Account-------------------


            // -------------------Delete Account-------------------
            response = await AccountsModule.DeleteAccountAsync(client, readOnCreateAccount.Id);

            Assert.NotNull(response);
            Assert.Equal(response.StatusCode, HttpStatusCode.OK);

            string deleteId = (response.Data == null) ? string.Empty : response.Data.ToString();

            Assert.NotNull(deleteId);
            Assert.NotEmpty(deleteId);
            Assert.Equal(insertId, deleteId);
            // -------------------End Delete Account-------------------
        }
예제 #16
0
        public async void ReadAsyncTest()
        {
            var client = new SugarRestClient(TestAccount.Url, TestAccount.Username, TestAccount.Password);

            Contact insertContact = ContactsModule.GetTestContact();

            // -------------------Create Contact-------------------
            SugarRestResponse response = await ContactsModule.CreateContactAsync(client, insertContact);

            Assert.NotNull(response);
            Assert.Equal(response.StatusCode, HttpStatusCode.OK);

            string insertId = (response.Data == null) ? string.Empty : response.Data.ToString();

            Assert.NotNull(insertId);
            Assert.NotEmpty(insertId);
            // -------------------End Create Contact-------------------


            // -------------------Read Contact-------------------
            response = await ContactsModule.ReadContactAsync(client, insertId);

            Assert.NotNull(response);
            Assert.Equal(response.StatusCode, HttpStatusCode.OK);

            Contact readOnCreateContact = (Contact)response.Data;

            Assert.NotNull(readOnCreateContact);
            Assert.Equal(insertContact.FirstName, readOnCreateContact.FirstName);
            Assert.Equal(insertContact.LastName, readOnCreateContact.LastName);
            Assert.Equal(insertContact.Title, readOnCreateContact.Title);
            Assert.Equal(insertContact.PrimaryAddressPostalcode, readOnCreateContact.PrimaryAddressPostalcode);
            // -------------------End Read Contact-------------------


            // -------------------Delete Contact-------------------
            response = await ContactsModule.DeleteContactAsync(client, readOnCreateContact.Id);

            Assert.NotNull(response);
            Assert.Equal(response.StatusCode, HttpStatusCode.OK);

            string deleteId = (response.Data == null) ? string.Empty : response.Data.ToString();

            Assert.NotNull(deleteId);
            Assert.NotEmpty(deleteId);
            Assert.Equal(insertId, deleteId);
            // -------------------End Delete Contact-------------------
        }
예제 #17
0
        public static List <string> BulkDeleteAccount(SugarRestClient client, List <string> accountIds)
        {
            var request = new SugarRestRequest("Accounts", RequestType.Delete);

            List <string> listId = new List <string>();

            foreach (var id in accountIds)
            {
                request.Parameter = id;
                SugarRestResponse response   = client.Execute(request);
                string            identifier = (response.Data == null) ? string.Empty : response.Data.ToString();
                listId.Add(identifier);
            }

            return(listId);
        }
예제 #18
0
        public void ReadBulkTest()
        {
            var client = new SugarRestClient(TestAccount.Url, TestAccount.Username, TestAccount.Password);

            // -------------------Bulk Read Contact-------------------
            int count = 10;
            SugarRestResponse response = ContactsModule.BulkReadContact(client, count);

            Assert.NotNull(response);
            Assert.Equal(response.StatusCode, HttpStatusCode.OK);

            List <Contact> readContacts = (List <Contact>)(response.Data);

            Assert.NotNull(readContacts);
            Assert.True(readContacts.Count <= count);
            // -------------------End Bulk Read Contact-------------------
        }
예제 #19
0
        public async void ReadBulkAsyncTest()
        {
            var client = new SugarRestClient(TestAccount.Url, TestAccount.Username, TestAccount.Password);

            // -------------------Bulk Read Account-------------------
            int count = 25;
            SugarRestResponse response = await AccountsModule.BulkReadAccountAsync(client, count);

            Assert.NotNull(response);
            Assert.Equal(response.StatusCode, HttpStatusCode.OK);

            List <Account> readAccounts = (List <Account>)response.Data;

            Assert.NotNull(readAccounts);
            Assert.True(readAccounts.Count <= count);
            // -------------------End Bulk Read Account-------------------
        }
예제 #20
0
        public static async Task <List <string> > BulkDeleteContact(SugarRestClient client, List <string> contactIds)
        {
            var request = new SugarRestRequest("Contacts", RequestType.Delete);

            List <string> listId = new List <string>();

            foreach (var id in contactIds)
            {
                request.Parameter = id;
                SugarRestResponse response = await client.Execute <Contact>(request);

                string identifier = (response.Data == null) ? string.Empty : response.Data.ToString();
                listId.Add(identifier);
            }

            return(listId);
        }
예제 #21
0
        public void ReadBulkWithQuery2Test()
        {
            var client = new SugarRestClient(TestAccount.Url, TestAccount.Username, TestAccount.Password);

            // -------------------Bulk Read Account-------------------
            int count   = 10;
            var request = new SugarRestRequest(RequestType.BulkRead);

            request.Options.QueryPredicates = new List <QueryPredicate>();
            request.Options.MaxResult       = count;

            SugarRestResponse response = client.Execute <Lead>(request);

            Assert.NotNull(response);
            Assert.Equal(response.StatusCode, HttpStatusCode.OK);

            List <Lead>   readLeads   = (List <Lead>)(response.Data);
            List <string> identifiers = readLeads.Select(x => x.Id).ToList();

            // -------------------End Bulk Read Account-------------------

            // -------------------Bulk Read Account-------------------
            request = new SugarRestRequest(RequestType.BulkRead);
            request.Options.Query           = "leads.id IN('10d82d59-08eb-8f0d-28e0-5777b57af47c', '12037cd0-ead2-402e-e1d0-5777b5dfb965', '13d4109d-c5ca-7dd1-99f1-5777b57ef30f', '14c136e5-1a67-eeba-581c-5777b5c8c463', '14e4825e-9573-4d75-2dbe-5777b5b7ee85', '1705b33a-3fad-aa70-77ef-5777b5b081f1', '171c1d8b-e34f-3a1f-bef7-5777b5ecc823', '174a8fc4-56e6-3471-46d8-5777b565bf5b', '17c9c496-90a1-02f5-87bd-5777b51ab086', '1d210352-7a1f-2c5d-04ae-5777b5a3312f')";
            request.Options.QueryPredicates = new List <QueryPredicate>();
            request.Options.QueryPredicates.Add(new QueryPredicate(nameof(Lead.LastName), QueryOperator.Equal, "Johnson"));
            request.Options.MaxResult = count;

            response = client.Execute <Lead>(request);

            Assert.NotNull(response);
            Assert.Equal(response.StatusCode, HttpStatusCode.OK);

            List <Lead> readLeadsWithQuery = (List <Lead>)(response.Data);

            Assert.NotNull(readLeadsWithQuery);

            List <string> newIdentifiers    = readLeads.Select(x => x.Id).ToList();
            List <string> commonIdentifiers = identifiers.Intersect(newIdentifiers).ToList();

            Assert.Equal(readLeads.Count, readLeadsWithQuery.Count);
            Assert.Equal(identifiers.Count, newIdentifiers.Count);
            Assert.Equal(identifiers.Count, commonIdentifiers.Count);
            // -------------------End Bulk Read Account-------------------
        }
예제 #22
0
        public void ReadBulkWithPredicate2Test()
        {
            var client = new SugarRestClient(TestAccount.Url, TestAccount.Username, TestAccount.Password);

            // -------------------Bulk Read Account-------------------
            int count   = 10;
            var request = new SugarRestRequest(RequestType.BulkRead);

            request.Options.QueryPredicates = new List <QueryPredicate>();
            request.Options.MaxResult       = count;

            SugarRestResponse response = client.Execute <Lead>(request);

            Assert.NotNull(response);
            Assert.Equal(response.StatusCode, HttpStatusCode.OK);

            List <Lead>   readLeads   = (List <Lead>)(response.Data);
            List <string> identifiers = readLeads.Select(x => x.Id).ToList();

            // -------------------End Bulk Read Account-------------------

            // -------------------Bulk Read Account-------------------
            request = new SugarRestRequest(RequestType.BulkRead);
            request.Options.QueryPredicates = new List <QueryPredicate>();
            request.Options.QueryPredicates.Add(new QueryPredicate(nameof(Lead.Id), QueryOperator.WhereIn, identifiers));
            request.Options.MaxResult = count;

            response = client.Execute <Lead>(request);

            Assert.NotNull(response);
            Assert.Equal(response.StatusCode, HttpStatusCode.OK);

            List <Lead> readLeadsWithQuery = (List <Lead>)(response.Data);

            Assert.NotNull(readLeadsWithQuery);

            List <string> newIdentifiers    = readLeads.Select(x => x.Id).ToList();
            List <string> commonIdentifiers = identifiers.Intersect(newIdentifiers).ToList();

            Assert.Equal(readLeads.Count, readLeadsWithQuery.Count);
            Assert.Equal(identifiers.Count, newIdentifiers.Count);
            Assert.Equal(identifiers.Count, commonIdentifiers.Count);
            // -------------------End Bulk Read Account-------------------
        }
예제 #23
0
        /// <summary>
        /// This Update request.
        /// </summary>
        /// <param name="restRequest">SugarCRM Rest request parameters.</param>
        /// <returns>The task response object.</returns>
        public static Task <RestResponse> Update(RestRequest restRequest)
        {
            return(Task.Run(() =>
            {
                var response = new RestResponse();

                var request = new SugarRestRequest();
                request.RequestType = RequestType.Update;
                request.ModuleName = restRequest.ModelInfo.ModelName;
                request.Url = restRequest.Account.Url;
                request.Username = restRequest.Account.Username;
                request.Password = restRequest.Account.Password;

                var client = new SugarRestClient();

                List <string> selectedFields;
                List <object> dataList = restRequest.Data.ToObjects(restRequest.ModelInfo, out selectedFields);
                request.Options.SelectFields = selectedFields;

                if (dataList == null)
                {
                    return response;
                }

                SugarRestResponse sugarRestResponse = new SugarRestResponse();
                if (dataList.Count == 1)
                {
                    request.Parameter = dataList;
                    sugarRestResponse = client.Execute(request);
                    response.Id = (string)sugarRestResponse.Data;
                }
                else
                {
                    request.Parameter = dataList;
                    sugarRestResponse = client.Execute(request);
                }

                response.JsonRawRequest = JToken.Parse(sugarRestResponse.JsonRawRequest).ToString(Newtonsoft.Json.Formatting.Indented);
                response.JsonRawResponse = JToken.Parse(sugarRestResponse.JsonRawResponse).ToString(Newtonsoft.Json.Formatting.Indented);

                return response;
            }));
        }
예제 #24
0
        /*  Remove comment to test.
         * [Fact]
         */
        public async void WikiReadAccountsWithQueryIgnorePredicatesTest()
        {
            string url      = "http://191.101.224.189/sugar/service/v4_1/rest.php";
            string username = "******";
            string password = "******";

            var client = new SugarRestClient(url, username, password);

            var request = new SugarRestRequest(RequestType.BulkRead);

            request.Options.Query           = "accounts.name = 'Air Safety Inc' ";
            request.Options.QueryPredicates = new List <QueryPredicate>();
            request.Options.QueryPredicates.Add(new QueryPredicate(nameof(Account.Name), QueryOperator.Equal, "General Electric USA, Inc"));

            SugarRestResponse response = await client.ExecuteAsync <Account>(request);

            List <Account> accounts = (List <Account>)response.Data;
            // -------------------End Bulk Read Account-------------------
        }
예제 #25
0
        public void BulkLinkedRead1Test()
        {
            var client = new SugarRestClient(TestAccount.Url, TestAccount.Username, TestAccount.Password);

            // -------------------Read Account Link Contact-------------------
            int count = 10;
            SugarRestResponse response = LinkedModules.BulkReadAccountLinkContact(client, count);

            Assert.NotNull(response);
            Assert.Equal(response.StatusCode, HttpStatusCode.OK);

            // Deserialize json data to custom object
            List <CustomAcccount1> customAccounts = JsonConvert.DeserializeObject <List <CustomAcccount1> >(response.JData);

            Assert.NotNull(customAccounts);
            Assert.True(customAccounts.Count <= count);

            // -------------------End Account Link Contact-------------------
        }
예제 #26
0
        public static async Task <List <Contact> > BulkReadContact2(SugarRestClient client, List <string> contactIds)
        {
            var request = new SugarRestRequest("Contacts", RequestType.ReadById);

            request.Options.SelectFields = GetSelectedField();
            request.Options.SelectFields.Add(nameof(Contact.Id));

            List <Contact> contacts = new List <Contact>();

            foreach (var id in contactIds)
            {
                request.Parameter = id;
                SugarRestResponse response = await client.Execute <Contact>(request);

                contacts.Add((Contact)response.Data);
            }

            return(contacts);
        }
예제 #27
0
        public static async Task <List <Account> > BulkReadAccount2(SugarRestClient client, List <string> accountIds)
        {
            var request = new SugarRestRequest("Accounts", RequestType.ReadById);

            request.Options.SelectFields = GetSelectedField();
            request.Options.SelectFields.Add(nameof(Account.Id));

            List <Account> accounts = new List <Account>();

            foreach (var id in accountIds)
            {
                request.Parameter = id;
                SugarRestResponse response = await client.Execute <Account>(request);

                accounts.Add((Account)response.Data);
            }

            return(accounts);
        }
예제 #28
0
        /*  Remove comment to test.
         * [Fact]
         */
        public void WikiDeleteBugTest()
        {
            // using SugarRestSharp;

            string url      = "http://191.101.224.189/sugar/service/v4_1/rest.php";
            string username = "******";
            string password = "******";

            var    client = new SugarRestClient(url, username, password);
            string bugId  = "49a8ff9f-e1d4-2135-c132-5855b99916a6";

            var request = new SugarRestRequest(RequestType.Delete);

            request.Parameter = bugId;

            SugarRestResponse response = client.Execute <Bug>(request);

            string deletedBugId = (string)response.Data;
            // -------------------End Bulk Read Account-------------------
        }
예제 #29
0
        /*  Remove comment to test.
         * [Fact]
         */
        public void WikiReadLeadTest()
        {
            // using SugarRestSharp;

            string url      = "http://191.101.224.189/sugar/service/v4_1/rest.php";
            string username = "******";
            string password = "******";

            string moduleName = "Leads";
            string moduleId   = "10d82d59-08eb-8f0d-28e0-5777b57af47c";

            var client  = new SugarRestClient(url, username, password);
            var request = new SugarRestRequest(moduleName, RequestType.ReadById);

            request.Parameter = moduleId;

            SugarRestResponse response = client.Execute(request);

            Lead lead = (Lead)response.Data;
            // -------------------End Bulk Read Account-------------------
        }
예제 #30
0
        /*  Remove comment to test.
         * [Fact]
         */
        public void WikiUpdateLeadsTest()
        {
            // using SugarRestSharp;

            string url      = "http://191.101.224.189/sugar/service/v4_1/rest.php";
            string username = "******";
            string password = "******";

            var client      = new SugarRestClient(url, username, password);
            var readRequest = new SugarRestRequest("Leads", RequestType.BulkRead);

            readRequest.Options.MaxResult = 3;

            SugarRestResponse leadsReadResponse = client.Execute(readRequest);
            List <Lead>       leadsToUpdate     = (List <Lead>)leadsReadResponse.Data;

            var request = new SugarRestRequest(RequestType.BulkUpdate);

            // Update account description
            foreach (var lead in leadsToUpdate)
            {
                lead.AccountDescription = string.Format("Lead Account moved on {0}.", DateTime.Now.ToShortDateString());
            }

            request.Parameter = leadsToUpdate;

            // Select fields.
            List <string> selectFields = new List <string>();

            selectFields.Add(nameof(Lead.AccountName));
            selectFields.Add(nameof(Lead.AccountDescription));
            selectFields.Add(nameof(Lead.Status));

            request.Options.SelectFields = selectFields;

            SugarRestResponse response = client.Execute <Lead>(request);

            List <string> updatedLeadIds = (List <string>)response.Data;
            // -------------------End Bulk Read Account-------------------
        }