Summary
-
Possible Extensions and improvements
There are some extensions and improvements we suggest. Some of them don't need a lot of design and time investment but others do need.
Extensions:
-
Add category hierarchy to improve site navigation and product searching. It may be also an algorithm that will allow creation of new categories and sub-categories accordingly to the type of products.
-
Add administrate pages that allows site administrator to control all tenders, sells and products. Moreover he will be able to enforce rules and to punish not faithful users.
-
Add possibility of immediate selling. For example user that offered high price (over special limit), can by it at this moment without waiting for the tender finish.
-
Add mail confirmation for user registration on site (the platform for this extension is already ready).
-
Allow users to sort products by price.
-
Allow users to add more pictures for product.
-
Allow users to edit and to delete their comments to other users.
-
Allow users to sort other user by sells and rank. And reach users products from user info page.
Improvements:
-
Improve and make graphics more attractive via adding pictures and icons.
-
Purchased knowledge
One of our personal goals in this project was to get the knowledge of web programming principles, to familiar with building of web-applications and web-sites and to learn C# language principles and syntax. We think that we reached those goals in this project at whole. In the process of building a project we learned the next topics:
-
Programming on C# language; project environment, objected oriented principles of C#, syntax, built-in classes, built-in objects and user interface tools.
-
Microsoft SQL; building of data base, relationships, keys and base built-in functionality.
-
Web programming; principles of HTTP protocol, html objects and syntax, cookies, application and client sessions, authentication forms. We also learned a layer structure in web programming and more.
-
Microsoft ASP.NET 2 framework; built in objects and classes like dataset and session. We also learned to built user interface and GUI building principles.
-
Appendix
-
DAL Details:
Here are details of the DAL functions of hosting tables. On these screenshots you can see function names, its parameters and fill functions names. There are additional standard functions like "insert", "delete" and "update" for all tables that have no such functions in their table adapter.
Clients:
GetClients()
|
Return all table data
|
GetOwnerBySerialNumber()
|
Return client row of product owner by product serial number.
|
GetClientByClientID()
|
Return client table row by client ID.
|
GetClientByNickName()
|
Return table row by nick name. Nick name is a unique key.
|
DeleteClient()
|
Delete the table row by client ID.
|
Sold Product History:
GetSoldProductsHistory()
|
Return all table data.
|
GetHistoryByNewOwnerID()
|
Return row by new owner ID.
|
GetHistoryBySellerID()
|
Return row by seller ID.
|
InsertHistory()
|
Add new row to the table.
|
Products:
GetProducts()
|
Return all table data.
|
GetAfterTenderProductsByOwner()
|
Return product rows of products with "after tender" field sat and belongs to client by its ID.
|
GetProductsByCategory()
|
Return all products rows by category.
|
GetProductBySerialNumber()
|
Return all products row by serial number.
|
GetProductsBeforeTenderByOwner()
|
Return product rows of products with "after tender" and "active" fields not sat and belong to client by its client ID.
|
GetTenderProducts()
|
Return product rows of products with "active" fields sat.
|
GetTenderProductsByCategory()
|
Return product rows of products with "active" fields sat and belong to specified category.
|
UpdateImagePath()
|
Updates field of image path in row with specified serial number.
|
DeleteProduct()
|
Delete product by serial number.
|
Tags vs. Products:
GetTags()
|
Return all table data.
|
GetTagsBySerialNumber()
|
Return all rows with specified serial number.
|
GetTagBySerialNumberAndTag()
|
Return row with specified serial number and tag pair. This pair is a complicated unique key.
|
GetProductsByTag()
|
Return rows with specified tag and "active" field sat in rows product.
|
GetProductsByTagAndCategory()
|
Return rows with specified tag, "active" field sat and specified category in rows product.
|
InsertTag()
|
Insert new tag to the table.
|
UpdateTag()
|
Updates fields of row by its serial number and tag pair.
|
Delete()
|
Delete row by serial number and tag pair.
|
Tenders:
GetTenders()
|
Return all table data.
|
GetActiveTendersByOwnerID()
|
Return rows by owner ID where "active" field sat in appropriate product.
|
GetTendersByBidderID()
|
Return rows with appropriate bidder ID.
|
GetTendersByCategory()
|
Return rows with specified category in appropriate product.
|
GetTendersByClientID()
|
Return rows with specified client ID in appropriate product owner.
|
GetTendersByOwnerID()
|
Return rows with specified client ID in appropriate product owner and "active" field sat in appropriate product.
|
GetTendersByTenderNumber()
|
Return row by tender number. Tender number has the same unique number like the product of this tender.
|
InsertTender()
|
Insert new row to the table.
|
UpdateTender()
|
Update row by tender number.
|
DeleteByTenderNumber()
|
Delete by tender number.
|
Bids per Tender:
GetBidsBerTender()
|
Return all table data.
|
GetBidByTenderNumberAndClientID()
|
Return rows with appropriate tender number and client ID.
|
GetBidByTenderNumber()
|
Return rows with appropriate tender number.
|
GetTendersByTenderNumberByDesc()
|
Return rows with appropriate tender number sorted by decrease of bid value.
|
AddBid()
|
Add new row to the table.
|
UpdateBid()
|
Update row with appropriate tender number and new owner ID. This pair: tender number and new owner ID is a complicated unique key.
|
DeleteByTenderNumber()
|
Deletes row with appropriate tender number.
|
Seller vs. Buyers:
GetSellersVSBuyers()
|
Return all table data.
|
GetDataByBuyerID()
|
Return row with appropriate buyer ID.
|
GetDataBySellerID()
|
Return row with appropriate seller ID.
|
InsertSellerVSBuyer()
|
Add new row to the table.
|
SetVoted()
|
Sets field "voted" on parameter value ("IsVoted"), in appropriate row. Seller ID and buyer ID is a unique key pair.
|
Feedbacks vs. Clients:
GetFeedbackVSClient()
|
Return all table data.
|
GetFeedbackByTargetID()
|
Return row with appropriate target ID.
|
InsertFeedback()
|
Add new row to the table.
|
-
Methods description:
AuthenticationBLL:
This class provides Authentication process. All methods works with ClientsTableAdapter if it has no different description .
IsAlreadyPresent
|
Parameters:
|
String Nick – user nick name, Password – user password.
|
Return:
|
true – user is already present in data base, false – otherwise.
|
Description:
|
Checks user presence in users data base.
|
GetClientByNick_Password
|
Parameters:
|
String Nick – user nick name, Password – user password.
|
Return:
|
ClientsRow
|
Description:
|
returns ClientsRow (Row of Clients Table with such Nick & Pass) or null.
|
ClientsBLL:
This class provides Clients management. All methods works with ClientsTableAdapter if it have no different description . The ClientID & Nick are unique.
IsNickAvailable
|
Parameters:
|
String Nick – user nick name
|
Return:
|
bool true – user is not already present in data base, and this Nick is legal for new user, false – otherwise.
|
Description:
|
Checks the ability of using this Nick for a new user.
|
GetClientByNickName
|
Parameters:
|
String Nick – user nick name
|
Return:
|
ClientsRow
|
Description:
|
returns ClientsRow (Row of Clients Table with such Nick ) or null.
|
GetClientByClientID
|
Parameters:
|
Guid ClientID
|
Return:
|
ClientsRow
|
Description:
|
returns ClientsRow (Row of Clients Table with such ID) or null.
|
GetOwnerBySerialNumber
|
Parameters:
|
Guid SerialNumber (Serial number of Product)
|
Return:
|
ClientsRow
|
Description:
|
returns ClientsRow (Row of Clients Table ) of the client, who is owner of product with given Serial Number.
|
AddNewClient
|
Parameters:
|
string FName, string LName, string Email, string Nick, string CreditCard, string ExpiredDate, string Phone,string Country, string Province, string Addr, string City, string Zip, string Pass, string Cache
|
Return:
|
bool true – user was successfully added, false – otherwise.
|
Description:
|
Adds new Client (ClientsRow) to the ClientsTable. ID generates automatic by database.
|
StringToInt
|
Parameters:
|
string str, int start_index
|
Return:
|
int
|
Description:
|
The method for Internal usage, converts string to integer, beginning from specified index
|
UpdateClient
|
Parameters:
|
Guid ClientID, string FName, string LName, string Email, string Nick, string CreditCard, string ExpiredDate,
string Phone, string Country, string Province, string Addr, string City, string Zip, string Pass, string Cache
|
Return:
|
bool true – user was successfully updated, false – otherwise.
|
Description:
|
Updates Client data (ClientsRow) in the ClientsTable
|
The follow function uses SellersVsBuyersBll.
UpdateClientRank
|
Parameters:
|
string ClientID,string AutorID,int NewRate
|
Return:
|
bool true if succeeded, false – otherwise.
|
Description:
|
Cheks the possibility of Client with AutorID, to rate the Client with ClientID(It is possible only once after all times where the Author has bayed some product from Client), updates the Client
Rate ant sets appropriated rate pucture (RankImage). Turns off the possibility of rating till next baying.
|
GetAllClients
|
Parameters:
|
none
|
Return:
|
ClientsDataTable
|
Description:
|
Returns all Clients in the database.
|
ProductsBLL:
This class provides Products management. All methods works with ProductsTableAdapter if it have no different description. Assumed, that every product has only one owner (one of Clients).
GetAllProducts
|
Parameters:
|
none
|
Return:
|
ProductsDataTable
|
Description:
|
Returns all Products in the database.
|
GetAfterTenderProductsByOwner
|
Parameters:
|
Guid OwnerID
|
Return:
|
ProductsDataTable
|
Description:
|
Returns all unsold Products of owner with given ID after it's tenders are finished
|
GetProductBySerialNumber
|
Parameters:
|
Guid SerialNumber – Serial Number of the product
|
Return:
|
ProductsRow
|
Description:
|
Returns the Product data(ProductsRow) of Product with such Serial Number
|
GetProductByCategory
|
Parameters:
|
string Category
|
Return:
|
ProductsDataTable
|
Description:
|
Returns all Products in the database with given Category.
|
GetProductsBeforeTenderByOwner
|
Parameters:
|
Guid OwnerID
|
Return:
|
ProductsDataTable
|
Description:
|
Returns all Products of owner with given ID where it's tenders are not started yet. Those products data are editable before it's tenders begin.
|
AddNewProduct
|
Parameters:
|
string ItemTitle(image name), string Category,
System.Guid OwnerID,int Quantity( positive),
bool AfterTender(true, where it's tender is over), string Image, string ItemLocation(Country), string ShipsTo(Country),
string Description, string Condition
|
Return:
|
Guid –ID, generated by database, of added product
|
Description:
|
Adds new Product (ProductsRow) to the ProductsTable.
|
UpdateProduct
|
Parameters:
|
Guid SerialNumber, string ItemTitle(image name),
string Category, int Quantity, bool AfterTender (true, where it's tender is over), string img, string NavigationPath (not used (null)), string ItemLocation(Country), string ShipsTo(Country), string Description, string TagsList (all tags for search, token by space), string Condition, bool Active (true ,where its tender is opened)
|
Return:
|
bool true if succeeded, false – otherwise.
|
Description:
|
Adds existent Product's data (ProductsRow) in the ProductsTable.
|
UpdateImagePath
|
Parameters:
|
Guid SerialNumber, string ImagePath
|
Return:
|
bool true if succeeded, false – otherwise.
|
Description:
|
Updates the Image path of Product with given Serial Number.
The Path is related to MainProjectFolder\Upload\ folder.
|
DeleteProduct
|
Parameters:
|
Guid SerialNumber
|
Return:
|
bool true if succeeded, false – otherwise.
|
Description:
|
Removes Product's data (ProductsRow) from the ProductsTable.
Assumes that the Product has no Tender.
|
Dostları ilə paylaş: |