We started by developing a solid framework - FrameWorx is an extensible platform with its first incarnation as AuctionWorx Enterprise.
The source to the MVC project, views, and controller code is included. This will allow a developer to change any aspect of the presentation layer. The remaining functionality can be extended by implementing providers and making calls to the API. The BLL and DAL are available only as compiled runtime binaries however the source to these are not necessary to implement any required changes.
The MVC project source is included: controller code (presentation logic), web pages (RAZOR), web partials (RAZOR), and any related HTML resources can be modified. All MVC related source code is commented and documented.
View code exists to actually present the data (model) to the user. There usually isn’t much logic in View code, except logic pertaining to presentation, such as looping through collections, etc.
Controller code exists to prepare the data (model) for presentation by the View. Therefore, calls to the client are usually made in the Controller code. Changes that involve modification to the data about to be displayed or the form data entered can be made here.
These static HTML assets are used by Views and can be modified as desired.
The provider model design pattern allows specific functional areas to be implemented and integrated into the platform using a dependency injection container. As such, developers can implement additional or replacement providers to the following functional areas:
The Listing Format Provider allows you to define your own listing formats. Standard Auction, Fixed Price and Classifieds are all included with the software.
For example, create a Dutch or a Reverse Auction, implement your own Listing Format Provider that contains the necessary business logic.
The Notification Provider gives access to change or add your own custom logic to all email notifications before they are sent out.
For example, send notifications as SMS text messages or attached documents to emails.
The Fee Provider allows you to assess fees, based on events and the listing state. The Fee Provider is queried any time a listing is created, updated, closed, etc… to calculate site fees.
For example, you may want to implement your own Fee provider if you have special cases where certain users should receive discounts or an existing database is queried.
The Payment Provider allows you to implement payment methods to be made either synchronously, as in the case of Authorize.Net; or asynchronously, as in the case of PayPal.
For example, implement Square Payments or a popular payment service in your locale or country.
The Media Asset Provider allows you to define new types of media that can be included in Listings and Listing Actions (Bids, Purchases, etc…). The system provides interfaces for generating, storing, and referencing media.
For example, you may want to implement saving and storing listing images with a specific image hosting service.
The Invoice Logic Provider provides access to shipping, tax, and subtotal calculations.
For example, you can add a custom invoice property or designate special considerations for when taxes are calculated.