Skip to content

Instantly share code, notes, and snippets.

@darrelmiller
Created April 10, 2012 21:46
Show Gist options
  • Save darrelmiller/2354832 to your computer and use it in GitHub Desktop.
Save darrelmiller/2354832 to your computer and use it in GitHub Desktop.
GET Customer Api
// CustomerController
public override Stream Get() {
var model = new CustomerModel(Container, _CustomerId);
var view = new CustomerDetailView(Container);
return view.Render(model);
}
//CustomerDetailView
public Stream Render(CustomerModel model) {
var resource = CreateResourceView(model);
resource.DataContext = model;
return resource.Serialize(new XmlSerializer(_ServiceLocator));
}
private DynamicResource3<object, CustomerModel> CreateResourceView(CustomerModel model) {
var resource = Resource3Factory.Create<CustomerModel>(_ServiceLocator, "CustomerDetailView")
.AddIdentityUrl(CustomerController.GetUrl(_ServiceLocator).AbsoluteUri)
.AddController(GetController());
resource.AddChildResource<en.Customer>("Customer", m => m.Customer)
.AddProperty(e => e.Code)
.AddProperty(e => e.Name)
.AddProperty(e => e.AccountCode)
.AddProperty(e => e.Telephone1)
.AddProperty(e => e.Telephone2)
.AddProperty(e => e.Fax1)
.AddProperty(e => e.Fax2)
.AddProperty(e => e.InvoiceEmail)
.AddProperty(e => e.WebSite)
.AddProperty(e => e.Closed)
.AddProperty(e => e.CreditLimit)
.AddProperty(e => e.Closed)
.AddProperty(e => e.Incomplete)
.AddProperty(e => e.InvoiceIncomplete)
.AddProperty(e => e.UserNote)
.AddProperty(e => e.CustomerTags)
.AddProperty(e => e.Instructions)
.AddRelatedResource<Language>("Language", e => e.Language)
.AddProperty(e => e.Description)
.EndResource()
.AddRelatedResource<Currency>("Currency", e => e.Currency)
.AddProperty(e => e.Code)
.EndResource()
.AddRelatedResource<Tavis.ServerEntities.Labour.Resources.Salesman>("Salesman", e => e.Salesman)
.AddProperty(e => e.Code)
.AddProperty(e => e.Name)
.EndResource()
.AddRelatedResource<PriceLevel>("PriceLevel", e => e.PriceLevel)
.AddProperty(e => e.Code)
.AddProperty(e => e.Description)
.EndResource()
.AddRelatedResource<InvoiceShipVia>("ShipVia", e => e.ShipVia)
.AddProperty(e => e.Description)
.EndResource()
.AddRelatedResource<InvoiceShippingTerm>("ShippingTerms", e => e.ShippingTerms)
.AddProperty(e => e.Description)
.EndResource()
.AddRelatedResource<InvoiceFOB>("FOB", e => e.FOB)
.AddProperty(e => e.Description)
.EndResource()
.AddRelatedResource<InvoiceTerm>("InvoiceTerms", e => e.InvoiceTerms)
.AddProperty(e => e.Description)
.EndResource()
.AddCollectionResource("CustomerTransportAccounts", e => e.CustomerTransportAccounts)
.AddChildResource<en.CustomerTransportAccount>("CustomerTransportAccount")
.AddProperty(e => e.Code)
.AddRelatedResource<Tavis.ServerEntities.Common.TransportCompany>("TransportCompany",
e => e.TransportCompany)
.AddProperty(e => e.Name)
.EndResource()
.EndResource()
.EndResource()
.AddCollectionResource("CustomerCurrencies", e => e.CustomerCurrencies)
.AddChildResource<en.CustomerCurrency>("CustomerCurrency")
.AddRelatedResource<Currency>("Currency", e => e.Currency)
.AddProperty(e => e.Code)
.AddRelatedResource<GLAccount>("AccountsReceivableGLAccount", e => e.AccountsReceivableGLAccount)
.AddProperty(e => e.Code)
.AddProperty(e => e.Description)
.EndResource()
.EndResource()
.EndResource()
.EndResource()
.AddCollectionResource("CustomerContacts", e => e.CustomerContacts)
.AddChildResource<en.CustomerContact>("CustomerContact")
.AddProperty(e => e.Closed)
.AddProperty(e => e.FirstName)
.AddProperty(e => e.LastName)
.AddProperty(e => e.JobTitle)
.AddProperty(e => e.WorkTelephone)
.AddProperty(e => e.Email)
.AddRelatedResource<Language>("Language", e => e.Language)
.AddProperty(e => e.Description)
.EndResource()
.EndResource()
.EndResource()
.AddCollectionResource("CustomerShippingAddresses", e => e.CustomerShippingAddresses)
.AddChildResource<en.CustomerShippingAddress>("CustomerShippingAddress")
.AddProperty(e => e.Closed)
.AddProperty(e => e.Description)
.AddProperty(e => e.Street)
.AddProperty(e => e.City)
.AddRelatedResource<Province>("Province", e => e.Province)
.AddProperty(e => e.Description)
.EndResource()
.AddProperty(e => e.FormattedDescription)
.EndResource()
.EndResource()
.AddCollectionResource("CustomerParts", e => e.CustomerParts)
.AddChildResource<en.CustomerPart>("CustomerPart")
.AddProperty(e => e.Code)
.AddRelatedResource <Tavis.ServerEntities.Inventory.Part>("Part", e => e.Part)
.AddProperty(e => e.Code)
.AddProperty(e => e.Description)
.AddProperty(e => e.SalesDescription)
.AddRelatedResource<PartGroup>("PartGroup", e => e.PartGroup)
.AddProperty(e => e.Description)
.EndResource()
.EndResource()
.EndResource()
.EndResource()
.EndResource()
.AddProperty(m => m.CustomerAddress);
resource.AddLinks(model.GetCustomerLinks());
resource.AddCommandQueue(model.PendingCommands);
return resource;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment