diff --git a/app/src/main/java/io/github/wulkanowy/activity/main/LoginTask.java b/app/src/main/java/io/github/wulkanowy/activity/main/LoginTask.java index f9ebad22..4c25a0f0 100644 --- a/app/src/main/java/io/github/wulkanowy/activity/main/LoginTask.java +++ b/app/src/main/java/io/github/wulkanowy/activity/main/LoginTask.java @@ -18,6 +18,8 @@ import io.github.wulkanowy.api.login.AccountPermissionException; import io.github.wulkanowy.api.login.BadCredentialsException; import io.github.wulkanowy.api.login.Login; import io.github.wulkanowy.api.login.LoginErrorException; +import io.github.wulkanowy.api.user.BasicInformation; +import io.github.wulkanowy.api.user.PersonalData; import io.github.wulkanowy.database.accounts.AccountData; import io.github.wulkanowy.database.accounts.DatabaseAccount; @@ -71,22 +73,26 @@ public class LoginTask extends AsyncTask { } if (save) { - AccountData accountData = new AccountData() - .setName("") - .setEmail(credentials[0]) - .setPassword(credentials[1]) - .setCounty(credentials[2]); + try { + BasicInformation userInfo = new BasicInformation(login.getCookies(), credentials[2]); + PersonalData personalData = userInfo.getPersonalData(); + String firstAndLastName = personalData.getFirstAndLastName(); - DatabaseAccount databaseAccount = new DatabaseAccount(activity); + AccountData accountData = new AccountData() + .setName(firstAndLastName) + .setEmail(credentials[0]) + .setPassword(credentials[1]) + .setCounty(credentials[2]); - try{ - databaseAccount.open(); - databaseAccount.put(accountData); - databaseAccount.close(); - } - catch (SQLException e){ + DatabaseAccount databaseAccount = new DatabaseAccount(activity); + databaseAccount.open(); + databaseAccount.put(accountData); + databaseAccount.close(); + } catch (SQLException e) { return R.string.SQLite_ioError_text; + } catch (IOException | LoginErrorException e) { + return R.string.login_denied; } } //Map cookiesList = login.getJar(); diff --git a/app/src/main/java/io/github/wulkanowy/activity/started/LoadingTask.java b/app/src/main/java/io/github/wulkanowy/activity/started/LoadingTask.java index 2e5329d1..da3c98a9 100644 --- a/app/src/main/java/io/github/wulkanowy/activity/started/LoadingTask.java +++ b/app/src/main/java/io/github/wulkanowy/activity/started/LoadingTask.java @@ -23,7 +23,6 @@ public class LoadingTask extends AsyncTask { private Activity activity; private boolean isOnline; - private final boolean SAVE_DATA = true; LoadingTask(Activity main) { @@ -33,10 +32,12 @@ public class LoadingTask extends AsyncTask { @Override protected Void doInBackground(Void... voids) { - try { - Thread.sleep(500); - } catch (InterruptedException e) { - e.printStackTrace(); + if (!SAVE_DATA) { + try { + Thread.sleep(500); + } catch (InterruptedException e) { + e.printStackTrace(); + } } isOnline = isOnline(); @@ -47,10 +48,8 @@ public class LoadingTask extends AsyncTask { protected void onPostExecute(Void result) { if (isOnline) { - signIn(); - } - else{ + } else{ Intent intent = new Intent(activity, MainActivity.class); activity.startActivity(intent); @@ -87,9 +86,7 @@ public class LoadingTask extends AsyncTask { new LoginTask(activity, false).execute(accountData.getEmail(), accountData.getPassword(), accountData.getCounty()); return true; } - } - catch (SQLException e){ - + } catch (SQLException e){ Toast.makeText(activity,R.string.SQLite_ioError_text,Toast.LENGTH_LONG ).show(); } } diff --git a/app/src/main/java/io/github/wulkanowy/api/user/AddressData.java b/app/src/main/java/io/github/wulkanowy/api/user/AddressData.java new file mode 100644 index 00000000..b2399163 --- /dev/null +++ b/app/src/main/java/io/github/wulkanowy/api/user/AddressData.java @@ -0,0 +1,40 @@ +package io.github.wulkanowy.api.user; + +public class AddressData { + + private String address; + + private String registeredAddress; + + private String correspondenceAddress; + + public AddressData setAddress(String address) { + this.address = address; + + return this; + } + + public AddressData setRegisteredAddress(String registeredAddress) { + this.registeredAddress = registeredAddress; + + return this; + } + + public AddressData setCorrespondenceAddress(String correspondenceAddress) { + this.correspondenceAddress = correspondenceAddress; + + return this; + } + + public String getAddress() { + return address; + } + + public String getRegisteredAddress() { + return registeredAddress; + } + + public String getCorrespondenceAddress() { + return correspondenceAddress; + } +} diff --git a/app/src/main/java/io/github/wulkanowy/api/user/BasicInformation.java b/app/src/main/java/io/github/wulkanowy/api/user/BasicInformation.java new file mode 100644 index 00000000..c4d734af --- /dev/null +++ b/app/src/main/java/io/github/wulkanowy/api/user/BasicInformation.java @@ -0,0 +1,69 @@ +package io.github.wulkanowy.api.user; + +import org.jsoup.Jsoup; +import org.jsoup.nodes.Document; +import org.jsoup.nodes.Element; + +import java.io.IOException; + +import io.github.wulkanowy.api.Cookies; +import io.github.wulkanowy.api.StudentAndParent; +import io.github.wulkanowy.api.login.LoginErrorException; + +public class BasicInformation extends StudentAndParent { + + private String studentDataPageUrl = "https://uonetplus-opiekun.vulcan.net.pl/{locationID}/{ID}/Uczen.mvc/DanePodstawowe"; + + private Document studentDataPageDocument; + + public BasicInformation(Cookies cookies, String locationID) throws IOException, LoginErrorException { + super(cookies, locationID); + + studentDataPageDocument = getPage(); + } + + private Document getPage() throws IOException, LoginErrorException { + studentDataPageUrl = studentDataPageUrl.replace("{locationID}", getLocationID()); + studentDataPageUrl = studentDataPageUrl.replace("{ID}", getID()); + + return Jsoup.connect(studentDataPageUrl) + .cookies(getJar()) + .get(); + } + + private String getRowDataChildValue(Element e, int index) { + return e.select(".daneWiersz .wartosc").get(index - 1).text(); + } + + public PersonalData getPersonalData() { + Element e = studentDataPageDocument.select(".mainContainer > article").get(0); + + return new PersonalData() + .setNames(getRowDataChildValue(e, 1)) + .setDateAndBirthPlace(getRowDataChildValue(e, 2)) + .setPesel(getRowDataChildValue(e, 3)) + .setGender(getRowDataChildValue(e, 4)) + .setPolishCitizenship(getRowDataChildValue(e, 5)) + .setFamilyName(getRowDataChildValue(e, 6)) + .setParentsNames(getRowDataChildValue(e, 7)); + } + + public AddressData getAddresData() { + Element e = studentDataPageDocument.select(".mainContainer > article").get(1); + + return new AddressData() + .setAddress(getRowDataChildValue(e, 1)) + .setRegisteredAddress(getRowDataChildValue(e, 2)) + .setCorrespondenceAddress(getRowDataChildValue(e, 3)); + + } + + public ContactDetails getContactDetails() { + Element e = studentDataPageDocument.select(".mainContainer > article").get(2); + + return new ContactDetails() + .setPhoneNumber(getRowDataChildValue(e, 1)) + .setCellPhoneNumber(getRowDataChildValue(e, 2)) + .setEmail(getRowDataChildValue(e, 3)); + } +} diff --git a/app/src/main/java/io/github/wulkanowy/api/user/ContactDetails.java b/app/src/main/java/io/github/wulkanowy/api/user/ContactDetails.java new file mode 100644 index 00000000..7650337e --- /dev/null +++ b/app/src/main/java/io/github/wulkanowy/api/user/ContactDetails.java @@ -0,0 +1,37 @@ +package io.github.wulkanowy.api.user; + +public class ContactDetails { + + private String phoneNumber; + + private String cellPhoneNumber; + + private String email; + + public ContactDetails setPhoneNumber(String phoneNumber) { + this.phoneNumber = phoneNumber; + return this; + } + + public ContactDetails setCellPhoneNumber(String cellPhoneNumber) { + this.cellPhoneNumber = cellPhoneNumber; + return this; + } + + public ContactDetails setEmail(String email) { + this.email = email; + return this; + } + + public String getPhoneNumber() { + return phoneNumber; + } + + public String getCellPhoneNumber() { + return cellPhoneNumber; + } + + public String getEmail() { + return email; + } +} diff --git a/app/src/main/java/io/github/wulkanowy/api/user/PersonalData.java b/app/src/main/java/io/github/wulkanowy/api/user/PersonalData.java new file mode 100644 index 00000000..5ad3ca0d --- /dev/null +++ b/app/src/main/java/io/github/wulkanowy/api/user/PersonalData.java @@ -0,0 +1,104 @@ +package io.github.wulkanowy.api.user; + +public class PersonalData { + + private String names; + + private String dateAndBirthPlace; + + private String pesel; + + private String gender; + + private String isPolishCitizenship; + + private String familyName; + + private String parentsNames; + + public PersonalData setNames(String names) { + this.names = names; + + return this; + } + + public PersonalData setDateAndBirthPlace(String dateAndBirthPlace) { + this.dateAndBirthPlace = dateAndBirthPlace; + + return this; + } + + public PersonalData setPesel(String pesel) { + this.pesel = pesel; + + return this; + } + + public PersonalData setGender(String gender) { + this.gender = gender; + + return this; + } + + public PersonalData setPolishCitizenship(String polishCitizenship) { + isPolishCitizenship = polishCitizenship; + + return this; + } + + public PersonalData setFamilyName(String familyName) { + this.familyName = familyName; + + return this; + } + + public PersonalData setParentsNames(String parentsNames) { + this.parentsNames = parentsNames; + + return this; + } + + public String getNames() { + return names; + } + + public String getFirstName() { + String[] name = names.split(" "); + + return name[0]; + } + + public String getSurname() { + String[] name = names.split(" "); + + return name[name.length - 1]; + } + + public String getFirstAndLastName() { + return getFirstName() + " " + getSurname(); + } + + public String getDateAndBirthPlace() { + return dateAndBirthPlace; + } + + public String getPesel() { + return pesel; + } + + public String getGender() { + return gender; + } + + public boolean isPolishCitizenship() { + return isPolishCitizenship.equals("Tak"); + } + + public String getFamilyName() { + return familyName; + } + + public String getParentsNames() { + return parentsNames; + } +}