diff --git a/OlympusServices/.idea/caches/build_file_checksums.ser b/OlympusServices/.idea/caches/build_file_checksums.ser index 24e3c6b..744d256 100644 Binary files a/OlympusServices/.idea/caches/build_file_checksums.ser and b/OlympusServices/.idea/caches/build_file_checksums.ser differ diff --git a/OlympusServices/.idea/misc.xml b/OlympusServices/.idea/misc.xml index 99202cc..cc51e58 100644 --- a/OlympusServices/.idea/misc.xml +++ b/OlympusServices/.idea/misc.xml @@ -25,7 +25,7 @@ - + diff --git a/OlympusServices/.idea/vcs.xml b/OlympusServices/.idea/vcs.xml deleted file mode 100644 index 94a25f7..0000000 --- a/OlympusServices/.idea/vcs.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/OlympusServices/app/build.gradle b/OlympusServices/app/build.gradle index 4a8aefa..1ffdc45 100644 --- a/OlympusServices/app/build.gradle +++ b/OlympusServices/app/build.gradle @@ -16,18 +16,27 @@ android { proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } + testOptions { + unitTests { + includeAndroidResources = true + } + } } dependencies { - implementation fileTree(dir: 'libs', include: ['*.jar']) + implementation 'com.android.support:appcompat-v7:28.0.0' implementation 'com.android.support:design:28.0.0' implementation 'com.android.support.constraint:constraint-layout:1.1.3' testImplementation 'junit:junit:4.12' + testImplementation 'org.robolectric:robolectric:4.0-alpha-3-SNAPSHOT' androidTestImplementation 'com.android.support.test:runner:1.0.2' androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2' implementation 'com.jaredrummler:material-spinner:1.2.5' implementation 'com.android.support:design:28.0.0-alpha3' implementation 'com.rengwuxian.materialedittext:library:2.1.4' - +} + +repositories { + maven { url "https://oss.sonatype.org/content/repositories/snapshots" } } diff --git a/OlympusServices/app/src/main/AndroidManifest.xml b/OlympusServices/app/src/main/AndroidManifest.xml index 167ae5c..d2cfb1f 100644 --- a/OlympusServices/app/src/main/AndroidManifest.xml +++ b/OlympusServices/app/src/main/AndroidManifest.xml @@ -14,7 +14,6 @@ android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/AppTheme"> - @@ -29,13 +28,15 @@ android:name="preloaded_fonts" android:resource="@array/preloaded_fonts" /> - - + + - + \ No newline at end of file diff --git a/OlympusServices/app/src/main/java/com/uottawa/olympus/olympusservices/Admin.java b/OlympusServices/app/src/main/java/com/uottawa/olympus/olympusservices/Admin.java new file mode 100644 index 0000000..4415ab5 --- /dev/null +++ b/OlympusServices/app/src/main/java/com/uottawa/olympus/olympusservices/Admin.java @@ -0,0 +1,29 @@ +package com.uottawa.olympus.olympusservices; + +/** + * This class allows the app to create admin object which is a child of the UserType class. + * The admin object has administrator control over the app. A user logging in with + * admin can delete and edit user profiles and delete and edit services. + * + */ + +public class Admin extends UserType { + + /** + * Constructs an admin object such that the admin + * has a constant username and password of admin and admin. + * And the admin has a constant first name and last name of Admin. + * there should only be one admin object. + */ + Admin(){ + super("admin", "admin", "Admin", "Admin"); + } + + /** + * This method is a method gets the string object describing the + * role of the object. + * + * @return String "admin" + */ + public String getRole(){ return "Admin"; } +} diff --git a/OlympusServices/app/src/main/java/com/uottawa/olympus/olympusservices/AdminWelcome.java b/OlympusServices/app/src/main/java/com/uottawa/olympus/olympusservices/AdminWelcome.java new file mode 100644 index 0000000..b9e900b --- /dev/null +++ b/OlympusServices/app/src/main/java/com/uottawa/olympus/olympusservices/AdminWelcome.java @@ -0,0 +1,35 @@ +package com.uottawa.olympus.olympusservices; + +import android.content.Intent; +import android.support.v7.app.AppCompatActivity; +import android.os.Bundle; +import android.view.View; + + + +public class AdminWelcome extends AppCompatActivity { + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_admin_welcome); + + } + @Override + public void onBackPressed(){ + } + + public void LogOut(View view){ + Intent intent = new Intent(getApplicationContext(), Main.class); + startActivity(intent); + finish(); + } + public void goToUsers(View view){ + Intent intent = new Intent(getApplicationContext(), UsersList.class); + startActivity(intent); + } + public void goToServices(View view){ + Intent intent = new Intent(getApplicationContext(), ServicesList.class); + startActivity(intent); + } +} diff --git a/OlympusServices/app/src/main/java/com/uottawa/olympus/olympusservices/Appointment.java b/OlympusServices/app/src/main/java/com/uottawa/olympus/olympusservices/Appointment.java new file mode 100644 index 0000000..93cd7a0 --- /dev/null +++ b/OlympusServices/app/src/main/java/com/uottawa/olympus/olympusservices/Appointment.java @@ -0,0 +1,6 @@ +package com.uottawa.olympus.olympusservices; + +public class Appointment { + Service service; + ServiceProvider provider; +} diff --git a/OlympusServices/app/src/main/java/com/uottawa/olympus/olympusservices/DBHelper.java b/OlympusServices/app/src/main/java/com/uottawa/olympus/olympusservices/DBHelper.java new file mode 100644 index 0000000..9653b0e --- /dev/null +++ b/OlympusServices/app/src/main/java/com/uottawa/olympus/olympusservices/DBHelper.java @@ -0,0 +1,234 @@ +package com.uottawa.olympus.olympusservices; + +import android.content.Context; +import android.database.sqlite.SQLiteDatabase; +import android.database.sqlite.SQLiteOpenHelper; +import android.database.Cursor; +import android.content.ContentValues; + +import java.util.LinkedList; +import java.util.List; + +/** + * The class DBHelper allows the Android application to access and perform + * CRUD (Create, Read, Update, Delete) operations on the tables of the SQLite database. + * There is currently one table of all users' login information and names. + * Table of service providers and services to come soon. + * + * To use, create an object of this class with the current activity as context. + * + */ + +public class DBHelper extends SQLiteOpenHelper { + + //version of db used for update method + private static final int DB_VERSION = 1; + //name of db in app data + private static final String DB_NAME = "UsersDB.db"; + + //SQLiteDatabase for reading + private static SQLiteDatabase readDB; + + //SQLiteDatabase for writing + private static SQLiteDatabase writeDB; + + //name of table containing user login information and names + private static final String TABLE_LOGIN = "userInfo"; + //columns of TABLE_LOGIN + private static final String COLUMN_USERNAME = "username"; + private static final String COLUMN_PASSWORD = "password"; + private static final String COLUMN_FIRSTNAME = "firstName"; + private static final String COLUMN_LASTNAME = "lastName"; + private static final String COLUMN_USERTYPE = "userType"; + +// private static final String TABLE_SERVICEPROVIDERS = "serviceProviders"; + + +// private static final String TABLE_SERVICES = "services"; + + + /** + * Creates an instance of DBHelper to allow activities to access and + * perform CRUD operations on the database via DBHelper's methods + * + * @param context current activity calling DBHelper + */ + public DBHelper(Context context){ + super(context, DB_NAME, null, DB_VERSION); + readDB = this.getReadableDatabase(); + writeDB = this.getWritableDatabase(); + } + + @Override + public void onCreate(SQLiteDatabase db){ + + String CREATE_LOGIN_TABLE = "CREATE TABLE "+ TABLE_LOGIN + "(" + + COLUMN_USERNAME + " STRING UNIQUE NOT NULL PRIMARY KEY ON CONFLICT ROLLBACK," + + COLUMN_PASSWORD + " STRING NOT NULL," + + COLUMN_FIRSTNAME + " STRING DEFAULT 'FirstName'," + + COLUMN_LASTNAME + " STRING DEFAULT 'LastName'," + + COLUMN_USERTYPE + " STRING NOT NULL" + ")"; + + db.execSQL(CREATE_LOGIN_TABLE); + + } + + @Override + public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion){ + db.execSQL("DROP TABLE IF EXISTS " + TABLE_LOGIN); + onCreate(db); + } + + @Override + public void onDowngrade(SQLiteDatabase db, int oldVersion, int newVersion) { + onUpgrade(db, oldVersion, newVersion); + } + + + /** + * Adds a user to the database. Returns false if there is a user already + * existing in the database with the same username. Returns true if + * successful in adding user to database. + * + * @param userType user to be added + * @return whether adding user was successful + */ + public boolean addUser(UserType userType){ + //Check for duplicate username by querying login table + Cursor cursor = writeDB.query(TABLE_LOGIN, + new String[] {COLUMN_USERNAME}, + COLUMN_USERNAME + " = ?", + new String[]{userType.getUsername()}, + null, null, null, + "1"); + //If cursor has 1+ elements in it, username already exists in table + if (cursor != null && cursor.getCount() > 0) + return false; + cursor.close(); + + ContentValues values = new ContentValues(); + values.put(COLUMN_USERNAME, userType.getUsername()); + values.put(COLUMN_PASSWORD, userType.getPassword()); + values.put(COLUMN_FIRSTNAME, userType.getFirstname()); + values.put(COLUMN_LASTNAME, userType.getLastname()); + values.put(COLUMN_USERTYPE, userType.getClass().getSimpleName()); + writeDB.insert(TABLE_LOGIN, null, values); + return true; + } + + /** + * Looks in database for user with requested username, and returns an + * object of UserType corresponding to said user's role. + * Returns null if no such user found. + * + * @param username username to look up + * @return object representing user found + */ + public UserType findUserByUsername(String username){ + UserType usertype; + Cursor cursor = readDB.rawQuery("SELECT * FROM " + TABLE_LOGIN + + " WHERE " + COLUMN_USERNAME + " = ?", + new String[]{username}); + + if (cursor.moveToFirst()){ + String password = cursor.getString(1); + String firstname = cursor.getString(2); + String lastname = cursor.getString(3); + if (cursor.getString(4) + .equals("Admin")){ + usertype = new Admin(); + } else if (cursor.getString(4) + .equals("ServiceProvider")){ + usertype = new ServiceProvider(username, password, firstname, lastname); + } else { + usertype = new User(username, password, firstname, lastname); + } + } else { + usertype = null; + } + cursor.close(); + return usertype; + } + + /** + * Updates user login information and name for user with requested username. + * Returns true if a user of said username was found and entry updated. + * Returns false if no user was found of said username. + * + * + * @param username username of entry to update + * @param password new password + * @param firstname new first name + * @param lastname new last name + * + * @return whether updating user information was successful + */ + public boolean updateUserInfo(String username, String password, String firstname, String lastname){ + ContentValues values = new ContentValues(); + values.put(COLUMN_PASSWORD, password); + values.put(COLUMN_FIRSTNAME, firstname); + values.put(COLUMN_LASTNAME, lastname); + + return writeDB.update(TABLE_LOGIN, values, COLUMN_USERNAME+" = ?", + new String[]{username}) > 0; + + } + + /** + * Looks in database for user with requested username, and deletes the corresponding + * entry. Returns true if a user was deleted, false otherwise. + * + * @param username username of entry to delete + * @return whether a user was deleted + */ + public boolean deleteUser(String username) { + return writeDB.delete(TABLE_LOGIN, COLUMN_USERNAME+" = ?", + new String[]{username}) > 0; + } + + /** + * Prints all entries of table. One row is printed per line. Columns are + * separated by spaces. + * + * @param tableName name of table to print + */ + public void printTable(String tableName){ + Cursor cursor = readDB.rawQuery("SELECT * FROM "+tableName, null); + cursor.moveToFirst(); + for (int i = 0; i getAllUsers(){ + List listOfUsers = new LinkedList<>(); + String[] user; + Cursor cursor = readDB.rawQuery("SELECT ? , ?, ?, ? FROM "+TABLE_LOGIN, + new String[]{COLUMN_USERNAME, COLUMN_FIRSTNAME, + COLUMN_LASTNAME, COLUMN_USERTYPE}); + if (cursor.moveToFirst()) { + for (int i = 0; i < cursor.getCount(); i++) { + user = new String[4]; + for (int j = 0; j < cursor.getColumnNames().length; j++) { + user[j] = cursor.getString(j); + } + listOfUsers.add(user); + } + } + cursor.close(); + return listOfUsers; + } + +} \ No newline at end of file diff --git a/OlympusServices/app/src/main/java/com/uottawa/olympus/olympusservices/EditServiceDialogFragment.java b/OlympusServices/app/src/main/java/com/uottawa/olympus/olympusservices/EditServiceDialogFragment.java new file mode 100644 index 0000000..1e867d6 --- /dev/null +++ b/OlympusServices/app/src/main/java/com/uottawa/olympus/olympusservices/EditServiceDialogFragment.java @@ -0,0 +1,69 @@ +package com.uottawa.olympus.olympusservices; + +import android.app.AlertDialog; +import android.app.Dialog; +import android.content.Context; +import android.content.DialogInterface; +import android.os.Bundle; +import android.support.v4.app.DialogFragment; +import android.view.LayoutInflater; +import android.widget.EditText; + +public class EditServiceDialogFragment extends DialogFragment{ + +public interface NoticeDialogListener { + public void onDialogEdit(DialogFragment dialog); + public void onDialogDelete(DialogFragment dialog); + } + EditServiceDialogFragment.NoticeDialogListener mListener; + + // Override the Fragment.onAttach() method to instantiate the NoticeDialogListener + @Override + public void onAttach(Context context) { + super.onAttach(context); + // Verify that the host activity implements the callback interface + try { + // Instantiate the NoticeDialogListener so we can send events to the host + mListener = (EditServiceDialogFragment.NoticeDialogListener) context; + } catch (ClassCastException e) { + // The activity doesn't implement the interface, throw exception + throw new ClassCastException(this.toString() + + " must implement NoticeDialogListener"); + } + } + @Override + public Dialog onCreateDialog(Bundle savedInstanceState) { + AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); + // Get the layout inflater + LayoutInflater inflater = getActivity().getLayoutInflater(); + + // Inflate and set the layout for the dialog + // Pass null as the parent view because its going in the dialog layout + builder.setView(inflater.inflate(R.layout.dialog_service_edit, null)) + // Add action buttons + .setPositiveButton(R.string.update, new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int id) { + Bundle args = new Bundle(); + //@anshu: get the name and rate to come from the dialog_service_new dialog + EditText rateInput = (EditText) ((AlertDialog) dialog).findViewById(R.id.RateInput); + double rate = Double.parseDouble(rateInput.getText().toString()); + args.putDouble("rate", rate); + //EditServiceDialogFragment.this.setArguments(args); + mListener.onDialogEdit(EditServiceDialogFragment.this); + } + }) + .setNegativeButton(R.string.delete, new DialogInterface.OnClickListener() { + public void onClick(DialogInterface dialog, int id) { + Bundle args = new Bundle(); + //@anshu: get the name and rate to come from the dialog_service_new dialog + args.putString("name", (String)getArguments().get("name")); + // + EditServiceDialogFragment.this.setArguments(args); + mListener.onDialogDelete(EditServiceDialogFragment.this); + } + }) + .setTitle((String)getArguments().get("name")); + return builder.create(); + } +} diff --git a/OlympusServices/app/src/main/java/com/uottawa/olympus/olympusservices/LogIn.java b/OlympusServices/app/src/main/java/com/uottawa/olympus/olympusservices/LogIn.java index 02ed1f3..beb8681 100644 --- a/OlympusServices/app/src/main/java/com/uottawa/olympus/olympusservices/LogIn.java +++ b/OlympusServices/app/src/main/java/com/uottawa/olympus/olympusservices/LogIn.java @@ -2,6 +2,10 @@ package com.uottawa.olympus.olympusservices; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; +import android.content.Intent; +import android.widget.EditText; +import android.view.View; +import android.widget.Toast; public class LogIn extends AppCompatActivity { @@ -10,4 +14,29 @@ public class LogIn extends AppCompatActivity { super.onCreate(savedInstanceState); setContentView(R.layout.activity_log_in); } + + public void onClickLogIn(View view){ + String username = ((EditText) findViewById(R.id.UsernameInput)).getText().toString(); + String password = ((EditText) findViewById(R.id.PasswordInput)).getText().toString(); + DBHelper dbHelper = new DBHelper(this); + Intent intent = new Intent(getApplicationContext(),Welcome.class); + if(dbHelper.findUserByUsername(username).getUsername().equals(username)&& + dbHelper.findUserByUsername(username).getPassword().equals(password)){ + //TODO send the welcome message the user information + intent.putExtra("username",username); + startActivity(intent); + + + }else{ + //TODO program incorrect username or password message + Toast.makeText(this,"error",Toast.LENGTH_LONG).show(); + } + + + + } + + + + } diff --git a/OlympusServices/app/src/main/java/com/uottawa/olympus/olympusservices/Main.java b/OlympusServices/app/src/main/java/com/uottawa/olympus/olympusservices/Main.java index f5722d9..052038a 100644 --- a/OlympusServices/app/src/main/java/com/uottawa/olympus/olympusservices/Main.java +++ b/OlympusServices/app/src/main/java/com/uottawa/olympus/olympusservices/Main.java @@ -11,7 +11,22 @@ public class Main extends AppCompatActivity { protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); + UserType admin = new Admin(); + DBHelper dbHelper = new DBHelper(this); + dbHelper.addUser(admin); + } -} + public void onClickSignUp(View view){ + Intent intent = new Intent(getApplicationContext(),SignUp.class); + startActivityForResult(intent,0); + + } + + public void onClickLogIn(View view){ + Intent intent = new Intent(getApplicationContext(),LogIn.class); + startActivityForResult(intent,0); + } + +} \ No newline at end of file diff --git a/OlympusServices/app/src/main/java/com/uottawa/olympus/olympusservices/NewServiceDialogFragment.java b/OlympusServices/app/src/main/java/com/uottawa/olympus/olympusservices/NewServiceDialogFragment.java new file mode 100644 index 0000000..ba7b746 --- /dev/null +++ b/OlympusServices/app/src/main/java/com/uottawa/olympus/olympusservices/NewServiceDialogFragment.java @@ -0,0 +1,89 @@ +package com.uottawa.olympus.olympusservices; + +import android.app.AlertDialog; +import android.app.Dialog; +import android.content.Context; +import android.content.DialogInterface; +import android.content.res.Resources; +import android.os.Bundle; +import android.support.annotation.NonNull; +import android.support.annotation.Nullable; +import android.support.v4.app.DialogFragment; +import android.view.LayoutInflater; +import android.view.ViewGroup; +import android.widget.EditText; +import android.view.View; + +import com.rengwuxian.materialedittext.MaterialEditText; + +public class NewServiceDialogFragment extends DialogFragment { + + + public interface NoticeDialogListener { + public void onDialogNew(DialogFragment dialog); + public void onDialogNevermind(DialogFragment dialog); + } + NoticeDialogListener mListener; + + // Override the Fragment.onAttach() method to instantiate the NoticeDialogListener + @Override + public void onAttach(Context context) { + super.onAttach(context); + // Verify that the host activity implements the callback interface + try { + // Instantiate the NoticeDialogListener so we can send events to the host + mListener = (NoticeDialogListener) context; + } catch (ClassCastException e) { + // The activity doesn't implement the interface, throw exception + throw new ClassCastException(this.toString() + + " must implement NoticeDialogListener"); + } + } + + //String name = ((EditText) view.findViewById(R.id.NameInput)).getText().toString(); + //int rate = Integer.parseInt(((EditText) view.findViewById(R.id.RateInput)).getText().toString()) + @Override + public Dialog onCreateDialog(Bundle savedInstanceState) { + + AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); + // Get the layout inflater + LayoutInflater inflater = getActivity().getLayoutInflater(); + View view = inflater.inflate(R.layout.dialog_service_new, null); + builder.setView(view); + + + // Inflate and set the layout for the dialog + // Pass null as the parent view because its going in the dialog layout + builder.setView(view) + // Add action buttons + .setPositiveButton(R.string.add, new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int id) { + EditText nameInput = (EditText) ((AlertDialog) dialog).findViewById(R.id.NameInput); + EditText rateInput = (EditText) ((AlertDialog) dialog).findViewById(R.id.RateInput); + String name = nameInput.getText().toString(); + double rate = Double.parseDouble(rateInput.getText().toString()); + Bundle args = new Bundle(); + args.putString("name", name); + args.putDouble("rate", rate); + NewServiceDialogFragment.this.setArguments(args); + mListener.onDialogNew(NewServiceDialogFragment.this); + //@anshu: get the name and rate to come from the dialog_service_new dialog + dostuff(); + } + }) + .setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() { + public void onClick(DialogInterface dialog, int id) { + NewServiceDialogFragment.this.getDialog().cancel(); + } + }); + return builder.create(); + } + + public void dostuff(){ + + + } + + +} diff --git a/OlympusServices/app/src/main/java/com/uottawa/olympus/olympusservices/Service.java b/OlympusServices/app/src/main/java/com/uottawa/olympus/olympusservices/Service.java new file mode 100644 index 0000000..991150e --- /dev/null +++ b/OlympusServices/app/src/main/java/com/uottawa/olympus/olympusservices/Service.java @@ -0,0 +1,4 @@ +package com.uottawa.olympus.olympusservices; + +public class Service { +} diff --git a/OlympusServices/app/src/main/java/com/uottawa/olympus/olympusservices/ServiceProvider.java b/OlympusServices/app/src/main/java/com/uottawa/olympus/olympusservices/ServiceProvider.java new file mode 100644 index 0000000..086ccf0 --- /dev/null +++ b/OlympusServices/app/src/main/java/com/uottawa/olympus/olympusservices/ServiceProvider.java @@ -0,0 +1,12 @@ +package com.uottawa.olympus.olympusservices; + +public class ServiceProvider extends UserType { + + ServiceProvider(String username, String password, String firstname, String lastname){ + super(username, password, firstname, lastname); + } + + public String getRole(){ return "ServiceProvider"; } + + +} diff --git a/OlympusServices/app/src/main/java/com/uottawa/olympus/olympusservices/SignUp.java b/OlympusServices/app/src/main/java/com/uottawa/olympus/olympusservices/SignUp.java index 770795e..4df5844 100644 --- a/OlympusServices/app/src/main/java/com/uottawa/olympus/olympusservices/SignUp.java +++ b/OlympusServices/app/src/main/java/com/uottawa/olympus/olympusservices/SignUp.java @@ -4,6 +4,10 @@ import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import com.jaredrummler.materialspinner.MaterialSpinner; import android.support.design.widget.Snackbar; +import android.content.Intent; +import android.widget.EditText; +import android.view.View; +import android.widget.Toast; public class SignUp extends AppCompatActivity { @Override @@ -11,7 +15,7 @@ public class SignUp extends AppCompatActivity { super.onCreate(savedInstanceState); setContentView(R.layout.activity_sign_up); MaterialSpinner spinner = findViewById(R.id.RoleInput); - spinner.setItems("Ice Cream Sandwich", "Jelly Bean", "KitKat", "Lollipop", "Marshmallow"); + spinner.setItems("User", "ServiceProvider"); spinner.setOnItemSelectedListener(new MaterialSpinner.OnItemSelectedListener() { @Override public void onItemSelected(MaterialSpinner view, int position, long id, String item) { @@ -19,7 +23,39 @@ public class SignUp extends AppCompatActivity { } }); } - public static void main(String[] args){ + + public void onClickSignUp(View view){ + UserType newUser; + String username = ((EditText) findViewById(R.id.UsernameInput)).getText().toString(); + String password = ((EditText) findViewById(R.id.PasswordInput)).getText().toString(); + String firstname = ((EditText) findViewById(R.id.FirstNameInput)).getText().toString(); + String lastname = ((EditText) findViewById(R.id.LastNameInput)).getText().toString(); + MaterialSpinner spinner = findViewById(R.id.RoleInput); + //TODO add message conditional to check if every EditText is filled up to standards + switch(spinner.getText().toString()){ + case "User": + newUser = new User(username,password,firstname,lastname); + break; + case "ServiceProvider": + newUser = new ServiceProvider(username,password,firstname,lastname); + break; + default: + newUser = new User(username,password,firstname,lastname); //if nothing is enter then defaults to user role. + break; + + } + + DBHelper dbHelper = new DBHelper(this); + Intent intent = new Intent(getApplicationContext(),LogIn.class); //TODO check if signup should take to the login page or automatically login + if(dbHelper.addUser(newUser)){ + startActivityForResult(intent,0); + }else{ + Toast.makeText(this,"error",Toast.LENGTH_LONG).show(); + //TODO add reaction is username is already taken + } } + + + } diff --git a/OlympusServices/app/src/main/java/com/uottawa/olympus/olympusservices/User.java b/OlympusServices/app/src/main/java/com/uottawa/olympus/olympusservices/User.java new file mode 100644 index 0000000..4d14c6c --- /dev/null +++ b/OlympusServices/app/src/main/java/com/uottawa/olympus/olympusservices/User.java @@ -0,0 +1,11 @@ +package com.uottawa.olympus.olympusservices; + +public class User extends UserType { + + User(String username, String password, String firstname, String lastname){ + super(username, password, firstname, lastname); + } + + public String getRole(){ return "User"; } + +} diff --git a/OlympusServices/app/src/main/java/com/uottawa/olympus/olympusservices/UserType.java b/OlympusServices/app/src/main/java/com/uottawa/olympus/olympusservices/UserType.java new file mode 100644 index 0000000..8c8cbeb --- /dev/null +++ b/OlympusServices/app/src/main/java/com/uottawa/olympus/olympusservices/UserType.java @@ -0,0 +1,81 @@ +package com.uottawa.olympus.olympusservices; + + +import java.io.Serializable; + +public abstract class UserType { + + String username; + String password; + String firstname; + String lastname; + + + + + UserType(String username, String password, String firstname, String lastname){ + this.username = username; + this.password = password; + this.firstname = firstname; + this.lastname = lastname; + } + + public abstract String getRole(); + + public String getUsername() { + return username; + } + + public String getPassword() { + return password; + } + + public String getFirstname() { + return firstname; + } + + public String getLastname() { + return lastname; + } + + + public void setUsername(String username) { + //remember to call updateUser(String username, String password, String firstname, String lastname) + //in activity whenever a setter is called. DBHelper requires a Context (Activity) to be initialized + //so cannot be initialized in this class + this.username = username; + + } + + public void setPassword(String password) { + //remember to call updateUser(String username, String password, String firstname, String lastname) + //in activity whenever a setter is called. DBHelper requires a Context (Activity) to be initialized + //so cannot be initialized in this class + this.password = password; + } + + public void setFirstname(String firstname) { + //remember to call updateUser(String username, String password, String firstname, String lastname) + //in activity whenever a setter is called. DBHelper requires a Context (Activity) to be initialized + //so cannot be initialized in this class + this.firstname = firstname; + } + + public void setLastname(String lastname) { + //remember to call updateUser(String username, String password, String firstname, String lastname) + //in activity whenever a setter is called. DBHelper requires a Context (Activity) to be initialized + //so cannot be initialized in this class + this.lastname = lastname; + } + + + + + public boolean equals(UserType other){ + if(this.username.equals(other.username)&&this.password.equals(other.password)&& + this.firstname.equals(other.firstname)&&this.lastname.equals(other.lastname)){ + return true; + } + return false; + } +} diff --git a/OlympusServices/app/src/main/java/com/uottawa/olympus/olympusservices/Welcome.java b/OlympusServices/app/src/main/java/com/uottawa/olympus/olympusservices/Welcome.java index 8cf6848..08054ef 100644 --- a/OlympusServices/app/src/main/java/com/uottawa/olympus/olympusservices/Welcome.java +++ b/OlympusServices/app/src/main/java/com/uottawa/olympus/olympusservices/Welcome.java @@ -2,6 +2,9 @@ package com.uottawa.olympus.olympusservices; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; +import android.view.View; +import android.widget.TextView; +import android.content.Intent; public class Welcome extends AppCompatActivity { @@ -9,5 +12,18 @@ public class Welcome extends AppCompatActivity { protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_welcome); + Bundle bundle = getIntent().getExtras(); + String username = bundle.getString("username"); + DBHelper dbHelper = new DBHelper(this); + UserType user; + user = dbHelper.findUserByUsername(username); + TextView role = (TextView) findViewById(R.id.Role); + TextView name = (TextView) findViewById(R.id.name); + role.setText(user.getRole()); + name.setText(user.getFirstname()); + + } + + } diff --git a/OlympusServices/app/src/main/res/layout/activity_log_in.xml b/OlympusServices/app/src/main/res/layout/activity_log_in.xml index 56bab7a..729bb27 100644 --- a/OlympusServices/app/src/main/res/layout/activity_log_in.xml +++ b/OlympusServices/app/src/main/res/layout/activity_log_in.xml @@ -13,4 +13,57 @@ android:background="@drawable/background" tools:context=".LogIn"> + + + + + + + +