An ACCURATE DEADLINE estimate is essential.
The architecture comprises of JSP as the frontend, Struts as the controller, and MySQL as the backend. The database schema has been designed and implemented. Will require modifications though.
The application consists of 7 packages namely, [url removed, login to view], [url removed, login to view], [url removed, login to view], [url removed, login to view], [url removed, login to view], [url removed, login to view], com.webapps.formbeans. Bulk of the application has been developed with the exception of the following requirements.
1) ALL Pages with lists require pagination. Pagination is breaking a large list into several pages with all page numbers displayed at the bottom along with previous and next links.
2) A requirement is to approve contact requests; the associated JSP page (img. 3) and action class ApproveUserAction has been implemented and is semi-functioning. The modifications to the JSP include a ‘Select all’, and ‘Unselect all’ links which will either check or uncheck all the contact requests. Upon clicking the approve button the ApproveUserAction class should be invoked and all selected contact requests should be approved. Furthermore there should also be a ignore button which removes checked contact requests from the contacts database, which will require coding an action IgnoreContactRequestAction and an ignoreContactRequest method in the ContactDAO class.
3) User profile, company profile, group profile, and job posting pages require a form for creating/editing relevant information. The JSP pages for all forms have been implemented and the associated Actions have limited-functionality (the create actions need to be coded, tested, and any existing bugs fixed).
4) User and group profiles optionally can contain a profile picture. In the current build neither users nor group owners can upload a picture to their profile or group. Therefore the create/edit user profile and group profile forms, relevant actions and DAO methods need to be modified to facilitate this feature.
5) Presently when the user clicks a create or edit profile link the link refers directly to the JSP page but best practices dictate the linking should happen through the controller, this is also required for all types of profiles.
6) The feature of editing profiles of all types need to be coded, the action classes will need to be created, the update methods (also require testing and possible bug fixes) which will be called from the action classes are present in the respective DAO classes. The respective create forms can be duplicated to serve the purpose of edit forms and the headings can be changed. The aforementioned profiles can only be edited by the user who originally created them.
7) The current process for logging in is entering your username and password into the appropriate fields at the main page (img. 1) and clicking the Login button. The LoginAction validates the user and retrieves all relevant users’ information such as their contacts, groups, unread message count, etc. Furthermore it puts the users’ userID in the session. If you now click the logout button then the Back button of your browser you can now view the previously logged in users information. Although if you click any link afterwards, you will brought back to the login page, it is still a security flaw that needs to be resolved.
8) Groups have a list of discussion topics listed on the group page. The list of discussion topics need to be paginated. Furthermore when a discussion topic is opened it will have a list of posts by members, those posts also need to be paginated. The last page of posts will have a box, after the last posting, to post a new message to the discussion topic (Similar to Facebook). The posting action has been implemented.
9) There are currently three different JSP pages for the user profile page depending on if the viewer is logged in, is a contact of the member he/she is viewing, or is not logged in. The JSP displayed if the viewer is not logged in is publicProfile.jsp. For search engine optimization (SEO) purposes the URL should be as follows http://*/FirstName-LastName/UserID.