C# 如何在通过QuickBooks Online API添加客户之前检查客户是否存在?

C# 如何在通过QuickBooks Online API添加客户之前检查客户是否存在?,c#,asp.net,asp.net-mvc,quickbooks,quickbooks-online,C#,Asp.net,Asp.net Mvc,Quickbooks,Quickbooks Online,我已经通过Oauth和“IPP.NET SDK for QuickBooks V3”NuGet包成功地将我的ASP.NET MVC5 C#项目连接到QuickBooks Online 我可以添加新客户,一切正常。但是,如果我尝试添加一个已经存在的客户,它会抛出以下错误:“ValidationException被抛出” 我的问题是,在尝试添加客户之前,检查客户是否已经存在于QuickBooks中以避免异常的最佳方法是什么 这是我为QuickBooks添加新客户的代码: OAuthRequestVa

我已经通过Oauth和“IPP.NET SDK for QuickBooks V3”NuGet包成功地将我的ASP.NET MVC5 C#项目连接到QuickBooks Online

我可以添加新客户,一切正常。但是,如果我尝试添加一个已经存在的客户,它会抛出以下错误:“ValidationException被抛出”

我的问题是,在尝试添加客户之前,检查客户是否已经存在于QuickBooks中以避免异常的最佳方法是什么

这是我为QuickBooks添加新客户的代码:

OAuthRequestValidator oauthValidator = new OAuthRequestValidator(accessToken, accessTokenSecret, consumerKey, consumerSecret);
ServiceContext context = new ServiceContext(realmId, intuitServicesType, oauthValidator);
DataService dataService = new DataService(context);

var customer = new Customer();

customer.GivenName = CultureInfo.CurrentCulture.TextInfo.ToTitleCase(submission.FirstName.ToLower());
customer.FamilyName = CultureInfo.CurrentCulture.TextInfo.ToTitleCase(submission.LastName.ToLower());
customer.BillAddr = new PhysicalAddress()
{
    Line1 = CultureInfo.CurrentCulture.TextInfo.ToTitleCase(submission.Address.ToLower()),
    City = CultureInfo.CurrentCulture.TextInfo.ToTitleCase(submission.City.ToLower()),
    CountrySubDivisionCode = submission.State,
    PostalCode = submission.ZipCode
};

customer.PrimaryEmailAddr = new EmailAddress() { Address = submission.EmailAddress.ToLower(), Default = true };
customer.PrimaryPhone = new TelephoneNumber() { FreeFormNumber = submission.Phone };

dataService.Add(customer);

编辑后添加了我的解决方案,答案来自@Keith Palmer

OAuthRequestValidator oauthValidator = new OAuthRequestValidator(accessToken, accessTokenSecret, consumerKey, consumerSecret);
ServiceContext context = new ServiceContext(realmId, intuitServicesType, oauthValidator);

// Check if the customer already exists in QuickBooks
QueryService<Customer> customerQueryService = new QueryService<Customer>(context);
int customerCount = customerQueryService.Where(c => c.GivenName == submission.FirstName && c.FamilyName == submission.LastName).Count();
if (customerCount == 0)
{
    // If not, then add the new customer.
    DataService dataService = new DataService(context);

    var customer = new Customer();

    customer.GivenName = CultureInfo.CurrentCulture.TextInfo.ToTitleCase(submission.FirstName.ToLower());
    customer.FamilyName = CultureInfo.CurrentCulture.TextInfo.ToTitleCase(submission.LastName.ToLower());
    customer.BillAddr = new PhysicalAddress()
    {
        Line1 = CultureInfo.CurrentCulture.TextInfo.ToTitleCase(submission.Address.ToLower()),
        City = CultureInfo.CurrentCulture.TextInfo.ToTitleCase(submission.City.ToLower()),
        CountrySubDivisionCode = submission.State,
        PostalCode = submission.ZipCode
    };
    customer.PrimaryEmailAddr = new EmailAddress() { Address = submission.EmailAddress.ToLower(), Default = true };
    customer.PrimaryPhone = new TelephoneNumber() { FreeFormNumber = submission.Phone };

    dataService.Add(customer);
}
else
{
    TempData["Warning"] = "The customer already exists in QuickBooks.";
    return RedirectToAction("Estimates", "Admin");
}
OAuthRequestValidator oauthValidator=新的OAuthRequestValidator(accessToken、accessTokenSecret、consumerKey、ConsumerCret);
ServiceContext上下文=新的ServiceContext(realmId、intuitServicesType、oauthValidator);
//检查QuickBooks中是否已存在该客户
QueryService customerQueryService=新的QueryService(上下文);
int customerCount=customerQueryService.Where(c=>c.GivenName==submission.FirstName&&c.FamilyName==submission.LastName).Count();
如果(customerCount==0)
{
//如果没有,则添加新客户。
DataService DataService=新的DataService(上下文);
var customer=新客户();
customer.GivenName=CultureInfo.CurrentCulture.TextInfo.ToTitleCase(submission.FirstName.ToLower());
customer.FamilyName=CultureInfo.CurrentCulture.TextInfo.ToTitleCase(submission.LastName.ToLower());
customer.BillAddr=新物理地址()
{
Line1=CultureInfo.CurrentCulture.TextInfo.ToTitleCase(submission.Address.ToLower()),
City=CultureInfo.CurrentCulture.TextInfo.ToTitleCase(submission.City.ToLower()),
CountrySubsectionCode=submission.State,
PostalCode=submission.ZipCode
};
customer.primarydemailaddr=new-EmailAddress(){Address=submission.EmailAddress.ToLower(),Default=true};
customer.PrimaryPhone=new TelephoneNumber(){FreeFormNumber=submission.Phone};
dataService.Add(客户);
}
其他的
{
TempData[“警告”]=“该客户已存在于QuickBooks中。”;
返回重定向到操作(“估计”、“管理”);
}

在添加之前,查询客户以查看它们是否存在

您查询的内容(姓名、电子邮件等)取决于您希望如何实现应用程序/您的客户想要什么

根据文件:

您的代码应该如下所示:

IEnumerable customers=发票查询服务,其中(c=>c.余额>1000)

您可以参考对象引用,查看可以根据哪些字段进行筛选:


关于如何使用QuickBooks API执行查询的详细信息是我想要了解的。我知道我需要做什么,但我不知道如何使用asp.net C#来做。搜索的名称或电子邮件对我来说很好,我只是找不到如何做的文档。我为您添加了一个代码示例和一些附加链接。谢谢,这正是我需要的!为了找到解决方案,我查阅了intuit开发人员的文档已经好几个小时了。不知道你是怎么发现的:)。我将用我实现的代码更新我的问题,以防其他人有同样的问题。@RobertM。幸运的是,有一种叫做谷歌的东西,让我们搜索并找到新的链接-P我已经更新了!干杯@基思帕尔默。快速提问,您的联系方式在网站上是否有效?几个月来,我们一直在努力与您的客户就OpenCart解决方案取得联系。。。