The customer currently has an app build with Symphony 3.4. The current set-up is too complex to maintain, user unfriendly and not flexible, lags a maintainable SEO structure.
The main function of the app (site) is to combine client request to professional workers. As an example: a client has a leak in the sink and is looking for a plumber.
Process steps:
- Existing or new client fills out a form (registers himself as a
user), selects the category of professionals he needs, suggest a
date for the fix, describes the problem (texarea) and uploads one or
more photos showing the issue. This is in fact an order without a
price.
- The admin (a person in the back-end) decides which professional
(professionals are signed up via a separate process, and are also
registered users) fits best. And couples the clients order to the
professional.
- An email notification is sent to the pro. The pro logs in to his
account, accepts the order to be accomplished at the date given by
the client. Adds a quotation (single price field) and a description.
- The client receives an email notification that his order was coupled
to a professional and is requested to login and accept the quotation
given by the pro.
- Once accepted by the client the pro fulfils the order at the date given.
- The pro logs in to his account, adds a photo and time of the job
done. Uploads the invoice(.pdf).
- The client gets a notification, logs in, pays the invoice (using stripe: cc and PayPal)
and is requested to give a rating from 1-5 and a comment on the job done. The order
status is set to fulfilled.
- The pro is notified that his invoice is paid and is able to see the
rating (not the comment) for his work on this assignment.
There’s a whole lot more but this is the core process of the system and we lacking a bit of experience specifically there.
So the question is can this be handled in Craft alone? Craft Commerce seems to have some of the functions available but expects a product/order price (in our situation the price is only set later in the process). Is a dedicated plugin needed to accomplish these tasks?