Skip to content
Snippets Groups Projects
Commit df25c1f1 authored by Moss's avatar Moss
Browse files

Changed 'View My Appointments' tag to 'View/Edit My Appointments' in testing code to fix errors

parent 31de19b0
No related branches found
No related tags found
1 merge request!14UC100 Small Variable Name Fix
......@@ -12,7 +12,7 @@ import org.openqa.selenium.support.ui.Select;
import edu.ncsu.csc.itrust.enums.TransactionType;
public class AppointmentTest extends iTrustSeleniumTest{
public class AppointmentTest extends iTrustSeleniumTest {
@Override
protected void setUp() throws Exception {
......@@ -20,39 +20,39 @@ public class AppointmentTest extends iTrustSeleniumTest{
gen.clearAllTables();
gen.standardData();
}
public void testAddApptPatientDeceased() throws Exception {
//Login as HCP Kelly Doctor
// Login as HCP Kelly Doctor
WebDriver driver = login("9000000000", "pw");
assertLogged(TransactionType.HOME_VIEW, 9000000000L, 0L, "");
WebElement element;
//go to the schedule appointment page
// go to the schedule appointment page
element = driver.findElement(By.linkText("Schedule Appointment"));
element.click();
//use the old search to go to the patients page
// use the old search to go to the patients page
element = driver.findElement(By.name("UID_PATIENTID"));
element.sendKeys("2");
element = driver.findElement(By.id("mainForm"));
element.submit();
//check to confirm cannot schedule appointment with dead patient
// check to confirm cannot schedule appointment with dead patient
element = driver.findElement(By.xpath("//*[@id='mainForm']/div/span"));
assertTrue(element.getText().contains("Cannot schedule appointment"));
}
public void testEditApptConflictCancel() throws Exception {
//Login as HCP Kelly Doctor
// Login as HCP Kelly Doctor
gen.uc22();
HtmlUnitDriver driver = (HtmlUnitDriver)login("9000000000", "pw");
HtmlUnitDriver driver = (HtmlUnitDriver) login("9000000000", "pw");
driver.setJavascriptEnabled(true);
assertLogged(TransactionType.HOME_VIEW, 9000000000L, 0L, "");
WebElement element;
element = driver.findElement(By.linkText("View My Appointments"));
element.click();
element.click();
new SimpleDateFormat("MM/dd/yyyy hh:mm a");
DateFormat format2 = new SimpleDateFormat("MM/dd/yyyy");
......@@ -61,9 +61,8 @@ public class AppointmentTest extends iTrustSeleniumTest{
c.set(Calendar.HOUR, 9);
c.set(Calendar.AM_PM, Calendar.AM);
c.set(Calendar.MINUTE, 45);
//edit first entry to the desired time
// edit first entry to the desired time
element = driver.findElements(By.linkText("Edit/Remove")).get(7);
element.click();
assertTrue(driver.getCurrentUrl().contains("http://localhost:8080/iTrust/auth/hcp/editAppt.jsp"));
......@@ -71,181 +70,179 @@ public class AppointmentTest extends iTrustSeleniumTest{
c.set(Calendar.HOUR, 10);
c.set(Calendar.AM_PM, Calendar.AM);
c.set(Calendar.MINUTE, 00);
//fill form
// fill form
Select select;
select = new Select (driver.findElement(By.name("apptType")));
select = new Select(driver.findElement(By.name("apptType")));
select.selectByIndex(0);
select = new Select (driver.findElement(By.name("time1")));
select = new Select(driver.findElement(By.name("time1")));
select.selectByIndex(9);
select = new Select (driver.findElement(By.name("time2")));
select = new Select(driver.findElement(By.name("time2")));
select.selectByIndex(0);
select = new Select (driver.findElement(By.name("time3")));
select = new Select(driver.findElement(By.name("time3")));
select.selectByIndex(0);
element = driver.findElement(By.name("schedDate"));
element.clear();
element.sendKeys(format2.format(c.getTime()));
driver.findElement(By.id("changeButton")).click();
assertTrue(driver.getPageSource().contains("Warning"));
assertNotLogged(TransactionType.APPOINTMENT_ADD, 9000000000L, 1L, "");
//click 'cancel'
// click 'cancel'
driver.findElement(By.id("cancel")).click();
//fill form
select = new Select (driver.findElement(By.name("apptType")));
// fill form
select = new Select(driver.findElement(By.name("apptType")));
select.selectByIndex(0);
select = new Select (driver.findElement(By.name("time1")));
select = new Select(driver.findElement(By.name("time1")));
select.selectByIndex(1);
select = new Select (driver.findElement(By.name("time2")));
select = new Select(driver.findElement(By.name("time2")));
select.selectByIndex(0);
select = new Select (driver.findElement(By.name("time3")));
select = new Select(driver.findElement(By.name("time3")));
select.selectByIndex(1);
element = driver.findElement(By.name("schedDate"));
element.clear();
element.sendKeys(format2.format(c.getTime()));
driver.findElement(By.id("changeButton")).click();
//confirm warning displayed and appointment not edited
assertFalse(driver.getPageSource().contains("Warning"));
// confirm warning displayed and appointment not edited
assertFalse(driver.getPageSource().contains("Warning"));
}
public void testAddApptConflictNoOverride() throws Exception {
gen.uc22();
//Login
// Login
WebDriver driver = login("9000000000", "pw");
assertLogged(TransactionType.HOME_VIEW, 9000000000L, 0L, "");
WebElement element;
element = driver.findElement(By.linkText("Schedule Appointment"));
element.click();
//use the old search to go to the patients page
element.click();
// use the old search to go to the patients page
element = driver.findElement(By.name("UID_PATIENTID"));
element.sendKeys("100");
element = driver.findElement(By.id("mainForm"));
element.submit();
//set up date
// set up date
Calendar cal = Calendar.getInstance();
SimpleDateFormat format = new SimpleDateFormat("MM/dd/yyyy");
cal.add(Calendar.DAY_OF_YEAR, 7);
//fill out form
cal.add(Calendar.DAY_OF_YEAR, 7);
// fill out form
Select select;
select = new Select (driver.findElement(By.name("apptType")));
select = new Select(driver.findElement(By.name("apptType")));
select.selectByValue("Physical");
select = new Select (driver.findElement(By.name("time1")));
select = new Select(driver.findElement(By.name("time1")));
select.selectByValue("09");
select = new Select (driver.findElement(By.name("time2")));
select = new Select(driver.findElement(By.name("time2")));
select.selectByValue("45");
select = new Select (driver.findElement(By.name("time3")));
select = new Select(driver.findElement(By.name("time3")));
select.selectByValue("AM");
element = driver.findElement(By.name("schedDate"));
element.clear();
element.sendKeys(format.format(cal.getTime()));
element.submit();
//check to make sure warning displayed and add is not logged
// check to make sure warning displayed and add is not logged
element = driver.findElement(By.xpath("//*[@id='conflictTable']/span"));
assertTrue(element.getText().contains("Warning"));
assertNotLogged(TransactionType.APPOINTMENT_ADD, 9000000000L, 100L, "");
}
public void testViewApptWithConflicts() throws Exception{
public void testViewApptWithConflicts() throws Exception {
gen.uc22();
//Login
// Login
WebDriver driver = login("100", "pw");
assertLogged(TransactionType.HOME_VIEW, 100L, 0L, "");
WebElement element;
//go to the View My Appointments link
element = driver.findElement(By.linkText("View My Appointments"));
// go to the View My Appointments link
element = driver.findElement(By.linkText("View/Edit My Appointments"));
element.click();
//confirm that appointments are showing
// confirm that appointments are showing
assertFalse(driver.getPageSource().contains("You have no appointments"));
assertLogged(TransactionType.APPOINTMENT_ALL_VIEW, 100L, 0L, "");
}
public void testAddApptSameEndStartTimes() throws Exception{
public void testAddApptSameEndStartTimes() throws Exception {
gen.uc22();
//Login
// Login
WebDriver driver = login("9000000000", "pw");
assertLogged(TransactionType.HOME_VIEW, 9000000000L, 0L, "");
WebElement element;
element = driver.findElement(By.linkText("Schedule Appointment"));
element.click();
//use the old search to go to the patients page
element.click();
// use the old search to go to the patients page
element = driver.findElement(By.name("UID_PATIENTID"));
element.sendKeys("100");
element = driver.findElement(By.id("mainForm"));
element.submit();
//set up date
// set up date
Calendar cal = Calendar.getInstance();
SimpleDateFormat format = new SimpleDateFormat("MM/dd/yyyy");
cal.add(Calendar.DAY_OF_YEAR, 1);
//fill out form
cal.add(Calendar.DAY_OF_YEAR, 1);
// fill out form
Select select;
select = new Select (driver.findElement(By.name("apptType")));
select = new Select(driver.findElement(By.name("apptType")));
select.selectByValue("Physical");
select = new Select (driver.findElement(By.name("time1")));
select = new Select(driver.findElement(By.name("time1")));
select.selectByValue("10");
select = new Select (driver.findElement(By.name("time2")));
select = new Select(driver.findElement(By.name("time2")));
select.selectByValue("30");
select = new Select (driver.findElement(By.name("time3")));
select = new Select(driver.findElement(By.name("time3")));
select.selectByValue("AM");
element = driver.findElement(By.name("schedDate"));
element.clear();
element.sendKeys(format.format(cal.getTime()));
element.submit();
//check that the appointment was successfully added
// check that the appointment was successfully added
assertTrue(driver.findElement(By.xpath("//*[@id='apptDiv']/span[1]")).getText().contains("Success: Physical"));
assertLogged(TransactionType.APPOINTMENT_ADD, 9000000000L, 100L, "");
}
public void testAddApptInvalidDate() throws Exception {
gen.uc22();
//Login
// Login
WebDriver driver = login("9000000000", "pw");
assertLogged(TransactionType.HOME_VIEW, 9000000000L, 0L, "");
WebElement element;
element = driver.findElement(By.linkText("Schedule Appointment"));
element.click();
//use the old search to go to the patients page
element.click();
// use the old search to go to the patients page
element = driver.findElement(By.name("UID_PATIENTID"));
element.sendKeys("100");
element = driver.findElement(By.id("mainForm"));
element.submit();
//fill out form
// fill out form
Select select;
select = new Select (driver.findElement(By.name("apptType")));
select = new Select(driver.findElement(By.name("apptType")));
select.selectByValue("Physical");
select = new Select (driver.findElement(By.name("time1")));
select = new Select(driver.findElement(By.name("time1")));
select.selectByValue("09");
select = new Select (driver.findElement(By.name("time2")));
select = new Select(driver.findElement(By.name("time2")));
select.selectByValue("45");
select = new Select (driver.findElement(By.name("time3")));
select = new Select(driver.findElement(By.name("time3")));
select.selectByValue("AM");
element = driver.findElement(By.name("schedDate"));
element.clear();
element.sendKeys("38/38/2025");
element.submit();
//check to make sure that appointment with invalid date was not added
// check to make sure that appointment with invalid date was not added
assertNotLogged(TransactionType.APPOINTMENT_ADD, 9000000000L, 100L, "");
}
}
\ No newline at end of file
......@@ -15,48 +15,48 @@ import org.openqa.selenium.htmlunit.HtmlUnitDriver;
import org.openqa.selenium.support.ui.Select;
import edu.ncsu.csc.itrust.enums.TransactionType;
public class AppointmentTypeTest extends iTrustSeleniumTest{
public class AppointmentTypeTest extends iTrustSeleniumTest {
private WebDriver driver = null;
@Before
public void setUp() throws Exception {
// Create a new instance of the driver
driver = new HtmlUnitDriver();
// Create a new instance of the driver
driver = new HtmlUnitDriver();
super.setUp();
gen.clearAllTables();
gen.standardData();
}
public void testAddAppointmentType() throws Exception {
// HCP 9000000001 logs in.
driver = (HtmlUnitDriver)login("9000000001", "pw");
driver = (HtmlUnitDriver) login("9000000001", "pw");
assertTrue(driver.getTitle().contains("iTrust - Admin Home"));
assertLogged(TransactionType.HOME_VIEW, 9000000001L, 0L, "");
// HCP 9000000001 moves to the edit appointment types page.
driver.findElement(By.linkText("Edit Appointment Types")).click();
assertTrue(driver.getPageSource().contains("iTrust - Maintain Appointment Types"));
assertLogged(TransactionType.APPOINTMENT_TYPE_VIEW, 9000000001L, 0L, "");
// HCP 9000000001 adds a new appointment type.
driver.findElement(By.name("name")).sendKeys("Immunization");
driver.findElement(By.name("duration")).sendKeys("30");
driver.findElement(By.name("add")).click();
driver.findElement(By.name("add")).click();
assertLogged(TransactionType.APPOINTMENT_TYPE_ADD, 9000000001L, 0L, "");
assertLogged(TransactionType.APPOINTMENT_TYPE_VIEW, 9000000001L, 0L, "");
}
public void testEditAppointmentTypeDuration() throws Exception {
// HCP 9000000001 logs in.
driver = (HtmlUnitDriver)login("9000000001", "pw");
driver = (HtmlUnitDriver) login("9000000001", "pw");
assertTrue(driver.getTitle().contains("iTrust - Admin Home"));
assertLogged(TransactionType.HOME_VIEW, 9000000001L, 0L, "");
// HCP 9000000001 moves to the edit appointment types page.
driver.findElement(By.linkText("Edit Appointment Types")).click();
assertTrue(driver.getPageSource().contains("iTrust - Maintain Appointment Types"));
assertLogged(TransactionType.APPOINTMENT_TYPE_VIEW, 9000000001L, 0L, "");
// HCP 9000000001 edits an existing appointment type.
driver.findElement(By.name("name")).sendKeys("Physical");
driver.findElement(By.name("duration")).sendKeys("45");
......@@ -64,43 +64,43 @@ public class AppointmentTypeTest extends iTrustSeleniumTest{
assertLogged(TransactionType.APPOINTMENT_TYPE_EDIT, 9000000001L, 0L, "");
assertLogged(TransactionType.APPOINTMENT_TYPE_VIEW, 9000000001L, 0L, "");
}
public void testEditAppointmentTypeDurationStringInput() throws Exception {
// HCP 9000000001 logs in.
driver = (HtmlUnitDriver)login("9000000001", "pw");
driver = (HtmlUnitDriver) login("9000000001", "pw");
assertTrue(driver.getTitle().contains("iTrust - Admin Home"));
assertLogged(TransactionType.HOME_VIEW, 9000000001L, 0L, "");
// HCP 9000000001 moves to the edit appointment types page.
driver.findElement(By.linkText("Edit Appointment Types")).click();
assertTrue(driver.getPageSource().contains("iTrust - Maintain Appointment Types"));
assertLogged(TransactionType.APPOINTMENT_TYPE_VIEW, 9000000001L, 0L, "");
// HCP 9000000001 edits an existing appointment type with a bad duration.
driver.findElement(By.name("name")).sendKeys("Physical");
driver.findElement(By.name("duration")).sendKeys("foo");
driver.findElement(By.name("update")).click();
assertNotLogged(TransactionType.APPOINTMENT_TYPE_EDIT, 9000000001L, 0L, "");
assertTrue(driver.getPageSource().contains("Error: Physical - Duration: must be an integer value."));
assertLogged(TransactionType.APPOINTMENT_TYPE_VIEW, 9000000001L, 0L, "");
}
public void testScheduleAppointment() throws Exception {
// HCP 9000000000 logs in.
driver = (HtmlUnitDriver)login("9000000000", "pw");
driver = (HtmlUnitDriver) login("9000000000", "pw");
assertTrue(driver.getTitle().contains("iTrust - HCP Home"));
assertLogged(TransactionType.HOME_VIEW, 9000000000L, 0L, "");
// HCP 9000000000 moves to the schedule new appointment page.
driver.findElement(By.linkText("Schedule Appointment")).click();
assertTrue(driver.getPageSource().contains("iTrust - Please Select a Patient"));
// HCP 9000000000 selects patient 1
driver.findElement(By.name("UID_PATIENTID")).sendKeys("1");
driver.findElement(By.cssSelector("input[value='1']")).submit();
assertTrue(driver.getPageSource().contains("iTrust - Schedule an Appointment"));
// HCP 9000000000 inputs the appointment information and submits
int year = Calendar.getInstance().get(Calendar.YEAR) + 1;
String scheduledDate = "07/06/" + year;
......@@ -120,124 +120,118 @@ public class AppointmentTypeTest extends iTrustSeleniumTest{
assertTrue(driver.getPageSource().contains("iTrust - Schedule an Appointment"));
assertTrue(driver.getPageSource().contains("Success"));
}
public void testPatientViewUpcomingAppointments() throws Exception {
gen.clearAppointments();
gen.appointmentCase1();
// Patient 2 logs in.
driver = (HtmlUnitDriver)login("2", "pw");
driver = (HtmlUnitDriver) login("2", "pw");
assertTrue(driver.getTitle().contains("iTrust - Patient Home"));
assertLogged(TransactionType.HOME_VIEW, 2L, 0L, "");
// Patient 2 moves to the view my appointments page.
driver.findElement(By.linkText("View My Appointments")).click();
driver.findElement(By.linkText("View/Edit My Appointments")).click();
assertTrue(driver.getPageSource().contains("iTrust - View My Messages"));
// Create timestamp
DateFormat dateFormat = new SimpleDateFormat("MM/dd/yyyy");
Timestamp time = new Timestamp(new Date().getTime());
// Patient 2 checks for the right appointments
WebElement tableElem = driver.findElements(By.tagName("table")).get(0);
List<WebElement> tableData = tableElem.findElements(By.tagName("tr"));
Iterator<WebElement> rowsOnTable = tableData.iterator();
int x = 0;
while(rowsOnTable.hasNext()) {
WebElement row = rowsOnTable.next();
if(x == 1) {
Timestamp time1 = new Timestamp(time.getTime()+(14*24*60*60*1000));
while (rowsOnTable.hasNext()) {
WebElement row = rowsOnTable.next();
if (x == 1) {
Timestamp time1 = new Timestamp(time.getTime() + (14 * 24 * 60 * 60 * 1000));
String dt1 = dateFormat.format(new Date(time1.getTime()));
assertTrue(row.getText().contains("Kelly Doctor"));
assertTrue(row.getText().contains("General Checkup"));
assertTrue(row.getText().contains(dt1 + " 10:30 AM"));
assertTrue(row.getText().contains("45 minutes"));
assertTrue(row.getText().contains("Read Comment"));
}
else if(x == 2) {
} else if (x == 2) {
assertTrue(row.getText().contains("Kelly Doctor"));
assertTrue(row.getText().contains("Consultation"));
assertTrue(row.getText().contains("06/04/" + (Calendar.getInstance().get(Calendar.YEAR)+1) + " 10:30 AM"));
assertTrue(row.getText()
.contains("06/04/" + (Calendar.getInstance().get(Calendar.YEAR) + 1) + " 10:30 AM"));
assertTrue(row.getText().contains("30 minutes"));
assertTrue(row.getText().contains("Read Comment"));
}
else if(x == 3) {
} else if (x == 3) {
assertTrue(row.getText().contains("Kelly Doctor"));
assertTrue(row.getText().contains("Colonoscopy"));
assertTrue(row.getText().contains("10/14/" + (Calendar.getInstance().get(Calendar.YEAR)+1) + " 08:00 AM"));
assertTrue(row.getText()
.contains("10/14/" + (Calendar.getInstance().get(Calendar.YEAR) + 1) + " 08:00 AM"));
assertTrue(row.getText().contains("90 minutes"));
assertTrue(row.getText().contains("No Comment"));
}
x++;
}
}
assertLogged(TransactionType.APPOINTMENT_ALL_VIEW, 2L, 0L, "");
}
public void testHcpViewUpcomingAppointments() throws Exception {
// Create DB for this test case
gen.clearAppointments();
gen.appointmentCase2();
// HCP 9000000000 logs in.
driver = (HtmlUnitDriver)login("9000000000", "pw");
driver = (HtmlUnitDriver) login("9000000000", "pw");
assertTrue(driver.getTitle().contains("iTrust - HCP Home"));
assertLogged(TransactionType.HOME_VIEW, 9000000000L, 0L, "");
// HCP 9000000000 moves to the view my appointments page.
driver.findElement(By.linkText("View My Appointments")).click();
assertTrue(driver.getPageSource().contains("iTrust - View My Messages"));
// Create timestamp
DateFormat dateFormat = new SimpleDateFormat("MM/dd/yyyy");
Timestamp time = new Timestamp(new Date().getTime());
// HCP 9000000000 checks for the right appointments
WebElement tableElem = driver.findElements(By.tagName("table")).get(0);
List<WebElement> tableData = tableElem.findElements(By.tagName("tr"));
Iterator<WebElement> rowsOnTable = tableData.iterator();
int x = 0;
while(rowsOnTable.hasNext()) {
WebElement row = rowsOnTable.next();
if(x == 1) {
Timestamp time1 = new Timestamp(time.getTime()+(7*24*60*60*1000));
while (rowsOnTable.hasNext()) {
WebElement row = rowsOnTable.next();
if (x == 1) {
Timestamp time1 = new Timestamp(time.getTime() + (7 * 24 * 60 * 60 * 1000));
String dt1 = dateFormat.format(new Date(time1.getTime()));
assertTrue(row.getText().contains("Random Person"));
assertTrue(row.getText().contains("Consultation"));
assertTrue(row.getText().contains(dt1 + " 09:10 AM"));
assertTrue(row.getText().contains("30 minutes"));
assertTrue(row.getText().contains("No Comment"));
}
else if(x == 2) {
Timestamp time1 = new Timestamp(time.getTime()+(7*24*60*60*1000));
} else if (x == 2) {
Timestamp time1 = new Timestamp(time.getTime() + (7 * 24 * 60 * 60 * 1000));
String dt1 = dateFormat.format(new Date(time1.getTime()));
assertTrue(row.getText().contains("Baby Programmer"));
assertTrue(row.getText().contains("General Checkup"));
assertTrue(row.getText().contains(dt1 + " 09:30 AM"));
assertTrue(row.getText().contains("45 minutes"));
assertTrue(row.getText().contains("Read Comment"));
}
else if(x == 3) {
Timestamp time2 = new Timestamp(time.getTime()+(10*24*60*60*1000));
} else if (x == 3) {
Timestamp time2 = new Timestamp(time.getTime() + (10 * 24 * 60 * 60 * 1000));
String dt2 = dateFormat.format(new Date(time2.getTime()));
assertTrue(row.getText().contains("Baby Programmer"));
assertTrue(row.getText().contains("General Checkup"));
assertTrue(row.getText().contains(dt2 + " 04:00 PM"));
assertTrue(row.getText().contains("45 minutes"));
assertTrue(row.getText().contains("Read Comment"));
}
else if(x == 4) {
Timestamp time3 = new Timestamp(time.getTime()+(14*24*60*60*1000));
} else if (x == 4) {
Timestamp time3 = new Timestamp(time.getTime() + (14 * 24 * 60 * 60 * 1000));
String dt3 = dateFormat.format(new Date(time3.getTime()));
assertTrue(row.getText().contains("Random Person"));
assertTrue(row.getText().contains("Ultrasound"));
assertTrue(row.getText().contains(dt3 + " 01:30 PM"));
assertTrue(row.getText().contains("30 minutes"));
assertTrue(row.getText().contains("No Comment"));
}
else if(x == 5) {
Timestamp time3 = new Timestamp(time.getTime()+(14*24*60*60*1000));
} else if (x == 5) {
Timestamp time3 = new Timestamp(time.getTime() + (14 * 24 * 60 * 60 * 1000));
String dt3 = dateFormat.format(new Date(time3.getTime()));
assertTrue(row.getText().contains("Andy Programmer"));
assertTrue(row.getText().contains("General Checkup"));
......@@ -246,21 +240,21 @@ public class AppointmentTypeTest extends iTrustSeleniumTest{
assertTrue(row.getText().contains("No Comment"));
}
x++;
}
}
assertLogged(TransactionType.APPOINTMENT_ALL_VIEW, 9000000000L, 0L, "");
}
public void testAddAppointmentTypeLengthZero() throws Exception {
// HCP 9000000001 logs in.
driver = (HtmlUnitDriver)login("9000000001", "pw");
driver = (HtmlUnitDriver) login("9000000001", "pw");
assertTrue(driver.getTitle().contains("iTrust - Admin Home"));
assertLogged(TransactionType.HOME_VIEW, 9000000001L, 0L, "");
// HCP 9000000001 moves to the edit appointment types page.
driver.findElement(By.linkText("Edit Appointment Types")).click();
assertTrue(driver.getPageSource().contains("iTrust - Maintain Appointment Types"));
assertLogged(TransactionType.APPOINTMENT_TYPE_VIEW, 9000000001L, 0L, "");
// HCP 9000000001 edits an existing appointment type.
driver.findElement(By.name("name")).sendKeys("Immunization");
driver.findElement(By.name("duration")).sendKeys("0");
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment