Architecture best-practice question, including heavy use of Gravity Forms

[ad_1]

I’m building a feature on my WP site that allows logged in managers to submit forms (build with Gravity Forms) to evaluate their employees. Let’s say there are 10 managers and each manager is evaluating 20 employees.

I’m using a series of plugins called GravityKit and GravityView, along with a front-end user management plugin that essentially allows managers to log into a front-end interface. In this interface they see a table that displays their employees, and they can click their employee name to fill out the evaluation for that employee. Using native Gravity Form notifications, that employee’s evaluation results are emailed to the employee, and management will download aggregate results after all evaluations are done. That’s it. Don’t worry about permissions or filtering, any manager can see any other manager’s employees, they will only choose their own to evaluate.

I’m debating three architectures and don’t know best practices enough to determine if one is better than the other.

**Option 1**

* Create two gravity forms:
* Form1 with employee name, identifier and some basic metadata
* Form2 (the evaluation) with the questions from Form1 and also the evaluation questions
* Managers see a table that displays Form1 data, and they can click a button in that table linking to Form2. That button will have all parameters to ensure Form2 has proper attribution and all evaluations are associated with the right employee.
* Manager completes Form2 and the evaluation results are emailed to the employee using native Gravity Forms notifications.

In this version I’m essentially using Form1’s entries similar to the way I would a post, to store data, as it would not be edited on the front end, only used to populate data and feed Form2. The benefit of this is I’m leveraging the most native functionality possible in Gravity Forms and GravityKit. The downside is I’m using form entries solely as a way to store static data, which doesn’t seem bad, but also doesn’t seem to be the intended use.

**Option 2**

* Create one Gravity Form that has the employee info/metadata and also the evaluation questions.
* Import form entries for all employees containing employee info/metadata, but NOT values for evaluation questions. This essentially \*starts\* the form but does not complete it.
* Managers see a table that displays all form entries (really only partial entries at this point) and instead of submitting a new form, they edit the existing form by completing the remaining questions on it (the evaluation questions). This edit functionality is facilitated by the GravityKit plugin being used. Now this completed evaluation will send the results to the employee

In this version I’m really just using a single progressive form here to manage everything. The benefit here is that I’m not using form entries as a way to store static data. The downside is this seems a tad hackey? Though I’m not sure.

**Option 3**

* Create a post type for employees that contains the employee info and metadata.
* Create a Gravity Form that has the evaluation questions.
* Managers see a list of employees that come from those posts, and can click from that list to access the evaluation using a link that also contains parameters to populate form fields with employee metadata.

This version seems to be utilizing best practices, however it does have more moving pieces and I think may require custom code, which I’d need to hire someone for (options 1 and 2 can be done with native functionality of these plugins).

Is there anything outright wrong about any of these options that should 100% be avoided? My inclination is #1 for now since it leverages the most native functionality and I can build it myself. Though #3 sounds like the “right” way to do it.

I’d greatly appreciate any input!

[ad_2]

 

This site will teach you how to build a WordPress website for beginners. We will cover everything from installing WordPress to adding pages, posts, and images to your site. You will learn how to customize your site with themes and plugins, as well as how to market your site online.

Buy WordPress Transfer