Hi, i am looking for some feedback on my user set up / method below… i am not looking for any help on coding, just some knowledge / wisdom on how you would tackle / approach this function / task:
Introduction
I am creating an e-learning website that allows people to buy Education Courses for other people (college friends etc…). Receivers of these Courses have to sign into the website to complete various tutorials each day. A live activity feed is on the home page of the site and it shows the following events:
- $buyer has bought a $course_name for $receiver
- $receiver has just completed tutorial 1 of $course_name
- $receiver has just completed $course_name
- etc
That is the main function of my site and how it will operate… i know some of you probably think it is a crazy idea, however please do not let that influence your help on the below
For Your Information
- a buyer is a person who buys a Course for another user
- a receiver is a person who receives a Course from another user
- many people can buy one specific person (receiver) many different Courses - hence a receiver might have many Courses to complete
- one specific person (buyer) can buy many Courses for many people - hence a buyer might have bought many Courses
- a buyer might also be a receiver on the system as they might have bought a course for someone and someone else might have bought a course for them
Here my method… i greatly appreciate any help / feedback you might be able to give me on the below, thanks…
User Accounts
The site will visualise and treat both Buyers and Receivers the same… as just a general “user”, regardless of their role (buying, receiving or both), so:
1 - you must create an account and log in, in order to buy a course for a receiver
2 - you must create an account and log in, in order to complete a course
3 - when a user creates an account, they must activate their account by clicking an activation link that will be emailed to them once they complete the new user form
4 - when a user (buyer or receiver) logs in they will land on the “My Courses” page… which will have 2 tabs, Received Courses and Purchased Courses
5 - a user has 4 different statuses (WAITING, PENDING, ACTIVE, CLOSED) - i’ll explain these in just a moment
When the buyer logs in and buys a course for a receiver, the system checks to see if the account (receiver emai)l exists in the database and the status of that user.
When a buyer buys a course for a receiver, and the receiver account (email) does not exist, the receivers account will actually be created at this stage but the status will be set to WAITING. An email will be automatically sent to the receiver notifying them that a course was purchased for them, and to click on the following link to create their account… they will be brought to the new account page and their email address will be automatically in the email field. As soon as they complete the form, their status will change to PENDING and an activation link will be emailed to them… as soon as they click the activation link, their status will change to ACTIVE, where at this stage they will be able to log in and access their account.
So, their is 2 ways that an account can be created:
1 - using the create account form
2 - when a buyer buys a course for a receiver (and an email is sent to the receiver to complete their account)
The system checks to see if the account (email) already exists and the account status on both of the above processes and determines the course of action to take based on the status
WAITING: user account was created because a buyer bought a receiver a mission and the receiver didn’t already have an account
PENDING: user has created an account (1 – to buy a project for someone… 2 – to complete a project that was bought for them) but has not activated their account
ACTIVE: user has activated their account by clicking on the activation link which was emailed to them
CLOSED: user has closed their account (unlikely, but required for privacy and terms and conditions purposes)
Thanks for reading all of the above… can anyone see any flaws in the above method…