diff --git a/app/build.gradle b/app/build.gradle index 67af01b68..b6cc65c4d 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -72,7 +72,7 @@ ext.supportVersion = "28.0.0" dependencies { implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version" - implementation('com.github.wulkanowy:api:f54b673') { exclude module: "threetenbp" } + implementation('com.github.wulkanowy:api:a5667f8000') { exclude module: "threetenbp" } implementation "com.android.support:support-v4:$supportVersion" implementation "com.android.support:appcompat-v7:$supportVersion" implementation "com.android.support:design:$supportVersion" diff --git a/app/src/androidTest/java/io/github/wulkanowy/data/repositories/local/SessionLocalTest.kt b/app/src/androidTest/java/io/github/wulkanowy/data/repositories/local/SessionLocalTest.kt index 6c13b25c4..b4efb7e0d 100644 --- a/app/src/androidTest/java/io/github/wulkanowy/data/repositories/local/SessionLocalTest.kt +++ b/app/src/androidTest/java/io/github/wulkanowy/data/repositories/local/SessionLocalTest.kt @@ -38,7 +38,7 @@ class SessionLocalTest { @Test fun saveAndReadTest() { - sessionLocal.saveStudent(Student(email = "test", password = "test123", schoolId = "23")).blockingAwait() + sessionLocal.saveStudent(Student(email = "test", password = "test123", schoolId = "23", endpoint = "fakelog.cf", loginType = "AUTO")).blockingAwait() assert(sharedHelper.getLong(SessionLocal.LAST_USER_KEY, 0) == 1L) assert(sessionLocal.isSessionSaved) diff --git a/app/src/main/java/io/github/wulkanowy/data/ErrorHandler.kt b/app/src/main/java/io/github/wulkanowy/data/ErrorHandler.kt index 67edf916d..b4ba5a7f3 100644 --- a/app/src/main/java/io/github/wulkanowy/data/ErrorHandler.kt +++ b/app/src/main/java/io/github/wulkanowy/data/ErrorHandler.kt @@ -2,7 +2,7 @@ package io.github.wulkanowy.data import android.content.res.Resources import io.github.wulkanowy.R -import io.github.wulkanowy.api.auth.NotLoggedInException +import io.github.wulkanowy.api.login.NotLoggedInException import timber.log.Timber import java.io.IOException import java.net.SocketTimeoutException diff --git a/app/src/main/java/io/github/wulkanowy/data/db/entities/Student.kt b/app/src/main/java/io/github/wulkanowy/data/db/entities/Student.kt index e3829e872..05c6c6885 100644 --- a/app/src/main/java/io/github/wulkanowy/data/db/entities/Student.kt +++ b/app/src/main/java/io/github/wulkanowy/data/db/entities/Student.kt @@ -12,6 +12,10 @@ data class Student( @PrimaryKey(autoGenerate = true) var id: Long = 0, + var endpoint: String, + + var loginType: String, + var email: String, var password: String, diff --git a/app/src/main/java/io/github/wulkanowy/data/repositories/SessionRepository.kt b/app/src/main/java/io/github/wulkanowy/data/repositories/SessionRepository.kt index ae7e201ef..7b0ea4c49 100644 --- a/app/src/main/java/io/github/wulkanowy/data/repositories/SessionRepository.kt +++ b/app/src/main/java/io/github/wulkanowy/data/repositories/SessionRepository.kt @@ -24,10 +24,10 @@ class SessionRepository @Inject constructor( lateinit var cachedStudents: Single> private set - fun getConnectedStudents(email: String, password: String, symbol: String): Single> { + fun getConnectedStudents(email: String, password: String, symbol: String, endpoint: String): Single> { cachedStudents = ReactiveNetwork.checkInternetConnectivity(settings) .flatMap { isConnected -> - if (isConnected) remote.getConnectedStudents(email, password, symbol) + if (isConnected) remote.getConnectedStudents(email, password, symbol, endpoint) else Single.error>(UnknownHostException("No internet connection")) }.doOnSuccess { cachedStudents = Single.just(it) } return cachedStudents diff --git a/app/src/main/java/io/github/wulkanowy/data/repositories/remote/SessionRemote.kt b/app/src/main/java/io/github/wulkanowy/data/repositories/remote/SessionRemote.kt index 8fdb86325..bbe021358 100644 --- a/app/src/main/java/io/github/wulkanowy/data/repositories/remote/SessionRemote.kt +++ b/app/src/main/java/io/github/wulkanowy/data/repositories/remote/SessionRemote.kt @@ -4,24 +4,29 @@ import io.github.wulkanowy.api.Api import io.github.wulkanowy.data.db.entities.Semester import io.github.wulkanowy.data.db.entities.Student import io.reactivex.Single +import java.net.URL import javax.inject.Inject import javax.inject.Singleton @Singleton class SessionRemote @Inject constructor(private val api: Api) { - fun getConnectedStudents(email: String, password: String, symbol: String): Single> { - return Single.just(initApi(Student(email = email, password = password, symbol = symbol))) + fun getConnectedStudents(email: String, password: String, symbol: String, endpoint: String): Single> { + return Single.just(initApi(Student(email = email, password = password, symbol = symbol, endpoint = endpoint, loginType = "AUTO"))) .flatMap { _ -> api.getPupils().map { students -> students.map { - Student(email = email, + Student( + email = email, password = password, symbol = it.symbol, studentId = it.studentId, studentName = it.studentName, schoolId = it.schoolId, - schoolName = it.schoolName) + schoolName = it.schoolName, + endpoint = endpoint, + loginType = it.loginType.name + ) } } } @@ -31,12 +36,14 @@ class SessionRemote @Inject constructor(private val api: Api) { return Single.just(initApi(student)).flatMap { _ -> api.getSemesters().map { semesters -> semesters.map { - Semester(studentId = student.studentId, + Semester( + studentId = student.studentId, diaryId = it.diaryId, diaryName = it.diaryName, semesterId = it.semesterId.toString(), semesterName = it.semesterNumber, - current = it.current) + current = it.current + ) } } @@ -49,9 +56,11 @@ class SessionRemote @Inject constructor(private val api: Api) { email = student.email password = student.password symbol = student.symbol - host = "vulcan.net.pl" + host = URL(student.endpoint).run { host + ":$port".removeSuffix(":-1") } + ssl = student.endpoint.startsWith("https") schoolId = student.schoolId studentId = student.studentId + loginType = Api.LoginType.valueOf(student.loginType) notifyDataChanged() } } diff --git a/app/src/main/java/io/github/wulkanowy/ui/login/LoginErrorHandler.kt b/app/src/main/java/io/github/wulkanowy/ui/login/LoginErrorHandler.kt index 5eeaceb7e..93b66ab18 100644 --- a/app/src/main/java/io/github/wulkanowy/ui/login/LoginErrorHandler.kt +++ b/app/src/main/java/io/github/wulkanowy/ui/login/LoginErrorHandler.kt @@ -1,7 +1,7 @@ package io.github.wulkanowy.ui.login import android.content.res.Resources -import io.github.wulkanowy.api.auth.BadCredentialsException +import io.github.wulkanowy.api.login.BadCredentialsException import io.github.wulkanowy.data.ErrorHandler class LoginErrorHandler(resources: Resources) : ErrorHandler(resources) { diff --git a/app/src/main/java/io/github/wulkanowy/ui/login/form/LoginFormFragment.kt b/app/src/main/java/io/github/wulkanowy/ui/login/form/LoginFormFragment.kt index e27526aa2..719a77bac 100644 --- a/app/src/main/java/io/github/wulkanowy/ui/login/form/LoginFormFragment.kt +++ b/app/src/main/java/io/github/wulkanowy/ui/login/form/LoginFormFragment.kt @@ -36,16 +36,24 @@ class LoginFormFragment : BaseFragment(), LoginFormView { override fun initInputs() { loginSignButton.setOnClickListener { - presenter.attemptLogin(loginEmailEdit.text.toString(), + presenter.attemptLogin( + loginNicknameEdit.text.toString(), loginPassEdit.text.toString(), - loginSymbolEdit.text.toString()) + loginSymbolEdit.text.toString(), + resources.getStringArray(R.array.endpoints_values)[loginHostEdit.selectedItemPosition] + ) } loginPassEdit.setOnEditorActionListener { _, id, _ -> onEditAction(id) } + loginHostEdit.run { + adapter = ArrayAdapter.createFromResource(context, R.array.endpoints_keys, android.R.layout.simple_spinner_item).apply { + setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item) + } + } + loginSymbolEdit.run { - setAdapter(ArrayAdapter(context, android.R.layout.simple_list_item_1, - resources.getStringArray(R.array.symbols_values))) + setAdapter(ArrayAdapter(context, android.R.layout.simple_list_item_1, resources.getStringArray(R.array.symbols_values))) setOnEditorActionListener { _, id, _ -> onEditAction(id) } } } @@ -69,20 +77,13 @@ class LoginFormFragment : BaseFragment(), LoginFormView { (activity as LoginSwitchListener?)?.switchFragment(1) } - override fun setErrorEmailRequired() { - loginEmailEdit.run { + override fun setErrorNicknameRequired() { + loginNicknameEdit.run { requestFocus() error = getString(R.string.login_field_required) } } - override fun setErrorEmailInvalid() { - loginEmailEdit.run { - requestFocus() - error = getString(R.string.login_invalid_email) - } - } - override fun setErrorPassRequired(focus: Boolean) { loginPassEdit.run { if (focus) requestFocus() @@ -119,7 +120,7 @@ class LoginFormFragment : BaseFragment(), LoginFormView { } override fun resetViewErrors() { - loginEmailEdit.error = null + loginNicknameEdit.error = null loginPassEdit.error = null } diff --git a/app/src/main/java/io/github/wulkanowy/ui/login/form/LoginFormPresenter.kt b/app/src/main/java/io/github/wulkanowy/ui/login/form/LoginFormPresenter.kt index b4245497a..d201b5bcc 100644 --- a/app/src/main/java/io/github/wulkanowy/ui/login/form/LoginFormPresenter.kt +++ b/app/src/main/java/io/github/wulkanowy/ui/login/form/LoginFormPresenter.kt @@ -19,9 +19,9 @@ class LoginFormPresenter @Inject constructor( view.initInputs() } - fun attemptLogin(email: String, password: String, symbol: String) { + fun attemptLogin(email: String, password: String, symbol: String, endpoint: String) { if (!validateCredentials(email, password, symbol)) return - disposable.add(sessionRepository.getConnectedStudents(email, password, normalizeSymbol(symbol)) + disposable.add(sessionRepository.getConnectedStudents(email, password, symbol, endpoint) .observeOn(schedulers.mainThread()) .subscribeOn(schedulers.backgroundThread()) .doOnSubscribe { @@ -51,11 +51,11 @@ class LoginFormPresenter @Inject constructor( }, { errorHandler.proceed(it) })) } - private fun validateCredentials(email: String, password: String, symbol: String): Boolean { + private fun validateCredentials(login: String, password: String, symbol: String): Boolean { var isCorrect = true - if (email.isEmpty()) { - view?.setErrorEmailRequired() + if (login.isEmpty()) { + view?.setErrorNicknameRequired() isCorrect = false } @@ -69,19 +69,10 @@ class LoginFormPresenter @Inject constructor( isCorrect = false } - if (!email.contains("[@]|[\\\\]{4}".toRegex()) && email.isNotEmpty()) { - view?.setErrorEmailInvalid() - isCorrect = false - } - - if (password.length <= 4 && password.isNotEmpty()) { + if (password.length < 6 && password.isNotEmpty()) { view?.setErrorPassInvalid(focus = isCorrect) isCorrect = false } return isCorrect } - - private fun normalizeSymbol(symbol: String): String { - return if (symbol.isEmpty()) "Default" else symbol - } } diff --git a/app/src/main/java/io/github/wulkanowy/ui/login/form/LoginFormView.kt b/app/src/main/java/io/github/wulkanowy/ui/login/form/LoginFormView.kt index d95f352af..31dca472b 100644 --- a/app/src/main/java/io/github/wulkanowy/ui/login/form/LoginFormView.kt +++ b/app/src/main/java/io/github/wulkanowy/ui/login/form/LoginFormView.kt @@ -6,14 +6,12 @@ interface LoginFormView : BaseView { fun initInputs() - fun setErrorEmailRequired() + fun setErrorNicknameRequired() fun setErrorPassRequired(focus: Boolean) fun setErrorSymbolRequire() - fun setErrorEmailInvalid() - fun setErrorPassInvalid(focus: Boolean) fun setErrorPassIncorrect() @@ -31,4 +29,4 @@ interface LoginFormView : BaseView { fun showSymbolInput() fun switchNextView() -} \ No newline at end of file +} diff --git a/app/src/main/res/layout/fragment_login_form.xml b/app/src/main/res/layout/fragment_login_form.xml index ca39822e0..58a4afe8b 100644 --- a/app/src/main/res/layout/fragment_login_form.xml +++ b/app/src/main/res/layout/fragment_login_form.xml @@ -66,10 +66,10 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginBottom="15dp" - android:hint="@string/login_email_hint"> + android:hint="@string/login_nickname_hint"> + + Zaloguj się za pomocą konta ucznia lub rodzica Podaj symbol dziennika VULCAN - Email + Email lub nick Hasło + Dziennik Symbol Zaloguj Logowanie… Synchronizacja - Ten adres email nie jest poprawny To hasło jest za krótkie To hasło jest niepoprawne Nie znaleziono ucznia. Sprwadź symbol diff --git a/app/src/main/res/values/api_endpoints.xml b/app/src/main/res/values/api_endpoints.xml new file mode 100644 index 000000000..b6fd6a3b1 --- /dev/null +++ b/app/src/main/res/values/api_endpoints.xml @@ -0,0 +1,21 @@ + + + + Vulcan + Opolska eSzkoła + Gdańska Platforma Edukacyjna + EduNet Miasta Tarnowa + ResMan Rzeszów + Fakelog + Fakelog lokalnie + + + https://vulcan.net.pl + https://eszkola.opolskie.pl + https://edu.gdansk.pl + https://umt.tarnow.pl + https://resman.pl + https://fakelog.cf + http://fakelog.localhost:3000 + + diff --git a/app/src/main/res/values/api_symbols.xml b/app/src/main/res/values/api_symbols.xml index 7ec951fae..6f443c81f 100644 --- a/app/src/main/res/values/api_symbols.xml +++ b/app/src/main/res/values/api_symbols.xml @@ -10,15 +10,20 @@ Bełżyce Biała Podlaska Biała Rawska + Białogard + Biały Bór Białystok Biecz Bielawa Bielsko-Biała + Bierawa + Bierutów Błaszki Błonie Bochnia Bogatynia Boguchwała + Boguty-Pianki Bolesławiec Braniewo Brodnica @@ -27,12 +32,15 @@ Brzeski Buk Bukowno + Busko-Zdrój + Bychawa Bydgoszcz Bystrzyca Kłodzka Bytom Bytom Odrzański Chełm Chełmno + Chełmża Chocianów Chodzież Chojnów @@ -50,6 +58,7 @@ Dębica Dobrzeń Wielki Dolnośląskie + Duszniki-Zdrój Dynów Działdowo Działoszyn @@ -64,18 +73,20 @@ Głogów Małopolski Głowno Głubczyce + Gmina Adamówka Gmina Aleksandrów Kujawski Gmina Aleksandrów Łódzki Gmina Alwernia Gmina Annopol Gmina Babice + Gmina Bałtów Gmina Baranów Gmina Barcin Gmina Baruchowo Gmina Będzino Gmina Bełchatów Gmina Białe Błota - Gmina Bisztynek + Gmina Bircza Gmina Błażowa Gmina Błędów Gmina Bobolice @@ -83,13 +94,17 @@ Gmina Bobrowniki Gmina Bojanowo Gmina Bojszowy + Gmina Bolesławiec Gmina Bolków Gmina Boronów Gmina Borowa Gmina Borzęcin + Gmina Branice Gmina Brąszewice + Gmina Brenna Gmina Brzeg Dolny Gmina Brzeziny + Gmina Brzeźnio Gmina Brzozów Gmina Brzyska Gmina Budzyń @@ -97,18 +112,22 @@ Gmina Byczyna Gmina Bystra-Sidzina Gmina Bytoń + Gmina Ceków-Kolonia Gmina Celestynów Gmina Cewice Gmina Chełm Gmina Chełmiec Gmina Chełmno + Gmina Chmielnik + Gmina Chodecz Gmina Chodel - Gmina Chodzież Gmina Chojnice + Gmina Chojnów Gmina Chorkówka Gmina Chrzypsko Wielkie Gmina Chybie Gmina Ciasna + Gmina Ciechocin Gmina Ciężkowice Gmina Cisna Gmina Cmolas @@ -120,6 +139,7 @@ Gmina Czarny Dunajec Gmina Czechowice-Dziedzice Gmina Czernichów + Gmina Czerniejewo Gmina Czerwionka-Leszczyny Gmina Człuchów Gmina Czosnów @@ -134,30 +154,42 @@ Gmina Dobrcz Gmina Dobrodzień Gmina Dobroń + Gmina Dobrzany + Gmina Dobrzyniewo Duże Gmina Dominowo + Gmina Dorohusk Gmina Drzewica + Gmina Dukla Gmina Dwikozy Gmina Dynów Gmina Dziadowa Kłoda + Gmina Działoszyce Gmina Dzierżoniów Gmina Elbląg - Gmina Galewice + Gmina Fajsławice + Gmina Garbów Gmina Garwolin Gmina Gąsawa Gmina Gaszowice Gmina Gawłuszowice Gmina Gaworzyce + Gmina Gdów Gmina Gielniów Gmina Gierałtowice + Gmina Glinojeck Gmina Głogów Gmina Głuchów + Gmina Głuszyca Gmina Gniew + Gmina Gniewoszów Gmina Goczałkowice-Zdrój Gmina Godkowo Gmina Godów Gmina Godziesze Wielkie + Gmina Gołańcz Gmina Goleszów Gmina Golina + Gmina Golub-Dobrzyń Gmina Goraj Gmina Gorlice Gmina Górno @@ -168,46 +200,58 @@ Gmina Gózd Gmina Grabów Gmina Grabowiec + Gmina Grajewo Gmina Granowo Gmina Grębocice Gmina Grębów Gmina Gródek + Gmina Gródek Nad Dunajcem Gmina Grodków Gmina Grodziec Gmina Grójec Gmina Gromadka + Gmina Gronowo Elbląskie Gmina Grudziądz Gmina Gruta Gmina Grybów Gmina Haczów Gmina Halinów Gmina Hańsk + Gmina Harasiuki Gmina Hażlach Gmina Hrubieszów Gmina Hyżne Gmina Imielno Gmina Inowrocław + Gmina Iwierzyce Gmina Iwonicz-Zdrój Gmina Izabelin + Gmina Jadów Gmina Jaktorów Gmina Janikowo Gmina Janowiec Gmina Janów Podlaski Gmina Jaraczewo + Gmina Jarocin Gmina Jasienica Rosielna Gmina Jasło + Gmina Jastków Gmina Jastrowie Gmina Jedlicze Gmina Jedlińsk Gmina Jedlnia-Letnisko Gmina Jejkowice + Gmina Jemielnica Gmina Jerzmanowa Gmina Jeżewo - Gmina Jodłowa + Gmina Jeziora Wielkie + Gmina Jeżowe Gmina Jordanów Gmina Józefów Gmina Józefów Nad Wisłą Gmina Jutrosin + Gmina Kamień + Gmina Kamienica Gmina Kamieniec Gmina Kamionka Gmina Karczmiska @@ -218,8 +262,10 @@ Gmina Kiełczygłów Gmina Kikół Gmina Kiszkowo + Gmina Klembów Gmina Kleszczewo Gmina Kleszczów + Gmina Kłobuck Gmina Kłoczew Gmina Kłomnice Gmina Klonowa @@ -232,20 +278,22 @@ Gmina Kołczygłowy Gmina Koluszki Gmina Komańcza + Gmina Komorniki Gmina Komprachcice Gmina Konopiska Gmina Końskowola + Gmina Korczyna Gmina Korycin Gmina Korzenna Gmina Kosakowo Gmina Kościan + Gmina Kościelec Gmina Kościerzyna Gmina Kosów Lacki Gmina Kostrzyn Gmina Kotla Gmina Kotuń Gmina Kozłów - Gmina Krajenka Gmina Kraśnik Gmina Krasnobród Gmina Krasnystaw @@ -254,28 +302,35 @@ Gmina Krokowa Gmina Krośnice Gmina Krupski Młyn + Gmina Krzanowice Gmina Krzemieniewo Gmina Krzymów Gmina Krzyżanowice Gmina Kunice Gmina Kunów Gmina Kurów + Gmina Kwidzyn Gmina Kwilcz Gmina Łabunie Gmina Łambinowice Gmina Lanckorona Gmina Łapsze Niżne + Gmina Łaskarzew Gmina Lasowice Wielkie Gmina Łaszczów + Gmina Łazy Gmina Łęczyca Gmina Łęczyce Gmina Legnickie Pole Gmina Łęka Opatowska + Gmina Lelkowo Gmina Lelów Gmina Leśna + Gmina Leśna Podlaska Gmina Lesznowola Gmina Leżajsk Gmina Limanowa + Gmina Lipinki Gmina Lipnik Gmina Lipowa Gmina Lisia Góra @@ -286,7 +341,9 @@ Gmina Łopiennik Górny Gmina Lubań Gmina Lubartów + Gmina Lubasz Gmina Lubenia + Gmina Łubianka Gmina Lubicz Gmina Lubiewo Gmina Lubin @@ -297,12 +354,13 @@ Gmina Luzino Gmina Łużna Gmina Łysomice + Gmina Magnuszew Gmina Maków Podhalański Gmina Malbork Gmina Małdyty - Gmina Małkinia Górna Gmina Marcinowice Gmina Margonin + Gmina Marianowo Gmina Masłów Gmina Mełgiew Gmina Michałowo @@ -323,21 +381,27 @@ Gmina Mińsk Mazowiecki Gmina Mirsk Gmina Młynary + Gmina Mogielnica Gmina Mogilany + Gmina Mordy Gmina Moryń + Gmina Mrozy Gmina Mszana Gmina Mszana Dolna + Gmina Murów Gmina Mycielin Gmina Myślibórz - Gmina Nałęczów + Gmina Nadarzyn Gmina Nawojowa Gmina Nekla - Gmina Nidzica Gmina Niebylec Gmina Niechlów Gmina Niedrzwica Duża Gmina Niegosławice + Gmina Niwiska + Gmina Nowa Ruda Gmina Nowa Wieś Lęborska + Gmina Nowe Miasto Gmina Nowe Miasto Nad Wartą Gmina Nowosolna Gmina Nowy Kawęczyn @@ -357,9 +421,12 @@ Gmina Osiek Mały Gmina Osielsko Gmina Ostrówek + Gmina Ostrów Lubelski Gmina Ostrów Mazowiecka Gmina Ostrów Wielkopolski + Gmina Otyń Gmina Ożarów + Gmina Ozimek Gmina Ozorków Gmina Pabianice Gmina Pacanów @@ -375,6 +442,7 @@ Gmina Piaski Gmina Piątnica Gmina Pilchowice + Gmina Pionki Gmina Pleśna Gmina Pleszew Gmina Płońsk @@ -391,8 +459,10 @@ Gmina Popów Gmina Poraj Gmina Potęgowo + Gmina Praszka Gmina Prażmów Gmina Prochowice + Gmina Promna Gmina Prószków Gmina Pruszcz Gdański Gmina Przecław @@ -405,7 +475,6 @@ Gmina Przykona Gmina Przyłęk Gmina Przystajń - Gmina Przytoczna Gmina Puchaczów Gmina Puck Gmina Puławy @@ -418,19 +487,25 @@ Gmina Radecznica Gmina Radków Gmina Radłów + Gmina Radomin Gmina Radomyśl Nad Sanem + Gmina Radoszyce Gmina Radwanice Gmina Radziłów + Gmina Rawa Mazowiecka Gmina Reńska Wieś Gmina Rozprza Gmina Ruciane-Nida Gmina Ruda-Huta Gmina Rudna - Gmina Rudnik Nad Sanem + Gmina Rudniki Gmina Rychliki + Gmina Rychtal Gmina Ryczywół Gmina Ryki Gmina Rypin + Gmina Rytro + Gmina Rytwiany Gmina Rząśnia Gmina Rzeczyca Gmina Rzepiennik Strzyżewski @@ -442,11 +517,15 @@ Gmina Ścinawa Gmina Sędziejowice Gmina Sępopol + Gmina Serokomla Gmina Sicienko + Gmina Sieciechów Gmina Siedlce Gmina Siemyśl + Gmina Siennica Gmina Siennica Różana Gmina Sienno + Gmina Siepraw Gmina Sierakowice Gmina Siewierz Gmina Skarżysko Kościelne @@ -468,6 +547,7 @@ Gmina Sośno Gmina Spiczyn Gmina Stalowa Wola + Gmina Stanisławów Gmina Stara Biała Gmina Stara Kamienica Gmina Stara Kornica @@ -475,12 +555,14 @@ Gmina Stare Miasto Gmina Stare Pole Gmina Starogard Gdański + Gmina Stawiszyn Gmina Stoczek Łukowski Gmina Stopnica Gmina Stryków Gmina Stryszów Gmina Strzałkowo Gmina Strzelce Opolskie + Gmina Strzelin Gmina Strzyżewice Gmina Subkowy Gmina Suchedniów @@ -492,7 +574,6 @@ Gmina Sulmierzyce Gmina Sułów Gmina Susiec - Gmina Świebodzin Gmina Świerklaniec Gmina Świerzawa Gmina Świeszyno @@ -500,6 +581,7 @@ Gmina Szadek Gmina Szaflary Gmina Szczebrzeszyn + Gmina Szczekociny Gmina Szczerców Gmina Szczutowo Gmina Szczytna @@ -510,28 +592,35 @@ Gmina Tarnowiec Gmina Tarnów Opolski Gmina Teresin + Gmina Terespol Gmina Tereszpol Gmina Tłuchowo Gmina Tłuszcz Gmina Tokarnia + Gmina Tomaszów Lubelski Gmina Tomice Gmina Toszek Gmina Trąbki Wielkie + Gmina Trzebiatów Gmina Trzebinia Gmina Trzeszczany + Gmina Trzyciąż Gmina Tuchów Gmina Turośń Kościelna Gmina Tyczyn + Gmina Tymbark + Gmina Tyrawa Wołoska + Gmina Uchanie Gmina Ujazd - Gmina Ulhówek + Gmina Ułęż Gmina Urszulin Gmina Urzędów Gmina Wąchock Gmina Wadowice Górne Gmina Wągrowiec Gmina Wąpielsk - Gmina Warlubie Gmina Wasilków + Gmina Wąwolnica Gmina Wejherowo Gmina Wiązów Gmina Wiązowna @@ -544,41 +633,50 @@ Gmina Wielka Nieszawka Gmina Wieniawa Gmina Wieprz + Gmina Wieruszów Gmina Wierzchosławice Gmina Wijewo + Gmina Wilczyn Gmina Wilków Gmina Wilkowice + Gmina Winnica Gmina Wińsko Gmina Wiskitki - Gmina Wiśniowa Gmina Wisznia Mała Gmina Wisznice Gmina Witkowo Gmina Władysławów Gmina Wleń + Gmina Włodawa Gmina Włoszczowa Gmina Wodzierady + Gmina Wodzisław Gmina Wojcieszków Gmina Wojnicz Gmina Wola Krzysztoporska Gmina Wolanów + Gmina Wolbrom Gmina Wołczyn Gmina Wołomin Gmina Wołów Gmina Wolsztyn + Gmina Wręczyca Wielka Gmina Wronki Gmina Wyrzysk Gmina Zabierzów Gmina Żabno + Gmina Zaklików + Gmina Zakroczym Gmina Zakrzówek Gmina Zaleszany Gmina Zamość + Gmina Zarszyn Gmina Zator - Gmina Zawoja Gmina Zawonia Gmina Zbąszyń Gmina Zbrosławice Gmina Zduńska Wola + Gmina Zdzieszowice Gmina Zebrzydowice Gmina Żelazków Gmina Zgierz @@ -586,6 +684,7 @@ Gmina Ziębice Gmina Zielonki Gmina Zławieś Wielka + Gmina Żmudź Gmina Żnin Gmina Żołynia Gmina Żukowice @@ -600,12 +699,15 @@ Gorzów Śląski Gorzów Wielkopolski Gostynin + Grajewo Grodzisk Mazowiecki Grudziądz Gryfino + Gryfów Śląski Hel Hrubieszów Inowrocław + Izbica Kujawska Jabłonowo Pomorskie Janowiec Wielkopolski Janów Lubelski @@ -614,6 +716,7 @@ Jasło Jastrzębie-Zdrój Jawor + Jaworzno Jedlina-Zdrój Jelcz-Laskowice Jelenia Góra @@ -622,14 +725,18 @@ Kalety Kalisz Kalwaria Zebrzydowska + Kańczuga Karczew Kartuzy Katowice + Kąty Wrocławskie + Kazimierz Dolny Kcynia Kędzierzyn-Koźle Kępno Kętrzyn Kielce + Kłodawa Kłodzko Knurów Kobyłka @@ -658,6 +765,7 @@ Krotoszyn Krzeszowice Krzyż Wielkopolski + Książ Wielkopolski Kujawsko-Pomorskie Łabiszyn Lądek-Zdrój @@ -667,15 +775,16 @@ Łeba Lębork Łęczna + Lędziny Legionowo Legnica Leszno Lewin Brzeski Leżajsk Lipno + Lipsko Łódź Łódzkie - Łomża Łowicz Lubań Lubartów @@ -700,13 +809,17 @@ Mińsk Mazowiecki Mosina Mrągowo + Mrągowski + Mszana Dolna Mszczonów Muszyna Mysłowice + Myszków Nakło Nad Notecią Nisko Nowa Dęba Nowa Sarzyna + Nowe Miasteczko Nowe Skalmierzyce Nowogard Nowogrodziec @@ -719,8 +832,10 @@ Obrzycko Olkusz Olsztyn + Opinogóra Górna Opoczno Opole + Opole Lubelskie Osieczna Osiecznica Ostróda @@ -734,6 +849,7 @@ Piaseczno Piaski Piastów + Piechowice Piekary Śląskie Pieńsk Piła @@ -745,6 +861,7 @@ Podkarpackie Podkowa Leśna Połczyn-Zdrój + Pomorskie Poniec Powiat aleksandrowski Powiat augustowski @@ -761,6 +878,7 @@ Powiat brodnicki Powiat brzeski Powiat brzozowski + Powiat buski Powiat bydgoski Powiat chełmiński Powiat chełmski @@ -775,6 +893,8 @@ Powiat dąbrowski Powiat dębicki Powiat działdowski + Powiat dzierżoniowski + Powiat elbląski Powiat ełcki Powiat garwoliński Powiat giżycki @@ -789,8 +909,11 @@ Powiat gostyński Powiat grójecki Powiat grudziądzki + Powiat gryficki Powiat gryfiński + Powiat hajnowski Powiat hrubieszowski + Powiat iławski Powiat inowrocławski Powiat janowski Powiat jarociński @@ -823,10 +946,14 @@ Powiat krasnostawski Powiat krośnieński Powiat krotoszyński + Powiat kutnowski Powiat łaski Powiat lęborski Powiat łęczycki + Powiat łęczyński + Powiat legnicki Powiat leski + Powiat leszczyński Powiat leżajski Powiat limanowski Powiat lipnowski @@ -866,6 +993,7 @@ Powiat oleski Powiat oleśnicki Powiat olkuski + Powiat olsztyński Powiat opatowski Powiat opoczyński Powiat opolski @@ -877,6 +1005,7 @@ Powiat pabianicki Powiat piaseczyński Powiat pilski + Powiat pińczowski Powiat piotrkowski Powiat pleszewski Powiat płocki @@ -886,10 +1015,13 @@ Powiat polkowicki Powiat poznański Powiat proszowicki + Powiat pruszkowski + Powiat przasnyski Powiat przemyski Powiat przeworski Powiat pszczyński Powiat puławski + Powiat pułtuski Powiat raciborski Powiat radomski Powiat radziejowski @@ -904,9 +1036,12 @@ Powiat sandomierski Powiat sanocki Powiat sępoleński + Powiat siedlecki Powiat siemiatycki Powiat sieradzki + Powiat sierpecki Powiat skarżyski + Powiat skierniewicki Powiat słubicki Powiat słupecki Powiat słupski @@ -925,6 +1060,7 @@ Powiat suski Powiat świdnicki Powiat świdwiński + Powiat świebodziński Powiat szamotulski Powiat szczycieński Powiat sztumski @@ -949,6 +1085,7 @@ Powiat wieluński Powiat wieruszowski Powiat włocławski + Powiat włodawski Powiat włoszczowski Powiat wodzisławski Powiat wołomiński @@ -957,9 +1094,11 @@ Powiat wrocławski Powiat wrzesiński Powiat wschowski + Powiat wysokomazowiecki Powiat wyszkowski Powiat żagański Powiat zambrowski + Powiat zamojski Powiat żarski Powiat zawierciański Powiat zduńskowolski @@ -982,10 +1121,13 @@ Pszczyna Puck Puławy + Pyskowice Rabka-Zdrój + Raciąż Racibórz Radom Radomsko + Radymno Radziejów Radzionków Radzyń Podlaski @@ -1044,6 +1186,7 @@ Szamocin Szczawnica Szczecin + Szczytno Szklarska Poręba Szprotawa Sztum @@ -1069,6 +1212,7 @@ Wadowice Wągrowiec Wałbrzych + Warmińsko-Mazurskie Warszawa Wąsosz Węgrów @@ -1096,12 +1240,14 @@ Żary Zawidów Zduńska Wola + Żelechów Zgierz Zgorzelec Zielona Góra Zielonka Złotoryja Żory + Zwoleń Żyrardów Żywiec @@ -1115,15 +1261,20 @@ belzyce bialapodlaska bialarawska + bialogard + bialybor bialystok biecz bielawa bielskobiala + bierawa + bierutow blaszki blonie bochnia bogatynia boguchwala + bogutypianki boleslawiec braniewo brodnica @@ -1132,12 +1283,15 @@ brzeski buk bukowno + buskozdroj + bychawa bydgoszcz bystrzycaklodzka bytom bytomodrzanski chelm chelmno + chelmza chocianow chodziez chojnow @@ -1155,6 +1309,7 @@ debica dobrzenwielki dolnoslaskie + dusznikizdroj dynow dzialdowo dzialoszyn @@ -1169,18 +1324,20 @@ glogowmalopolski glowno glubczyce + gminaadamowka gminaaleksandrowkujawski gminaaleksandrowlodzki gminaalwernia gminaannopol gminababice + gminabaltow gminabaranow gminabarcin gminabaruchowo gminabedzino gminabelchatow gminabialeblota - gminabisztynek + gminabircza gminablazowa gminabledow gminabobolice @@ -1188,13 +1345,17 @@ gminabobrowniki gminabojanowo gminabojszowy + gminaboleslawiec gminabolkow gminaboronow gminaborowa gminaborzecin + gminabranice gminabraszewice + gminabrenna gminabrzegdolny gminabrzeziny + gminabrzeznio gminabrzozow gminabrzyska gminabudzyn @@ -1202,18 +1363,22 @@ gminabyczyna gminabystrasidzina gminabyton + gminacekowkolonia gminacelestynow gminacewice gminachelm gminachelmiec gminachelmno + gminachmielnik + gminachodecz gminachodel - gminachodziez gminachojnice + gminachojnow gminachorkowka gminachrzypskowielkie gminachybie gminaciasna + gminaciechocin gminaciezkowice gminacisna gminacmolas @@ -1225,6 +1390,7 @@ gminaczarnydunajec gminaczechowicedziedzice gminaczernichow + gminaczerniejewo gminaczerwionkaleszczyny gminaczluchow gminaczosnow @@ -1239,30 +1405,42 @@ gminadobrcz gminadobrodzien gminadobron + gminadobrzany + gminadobrzyniewoduze gminadominowo + gminadorohusk gminadrzewica + gminadukla gminadwikozy gminadynow gminadziadowakloda + gminadzialoszyce gminadzierzoniow gminaelblag - gminagalewice + gminafajslawice + gminagarbow gminagarwolin gminagasawa gminagaszowice gminagawluszowice gminagaworzyce + gminagdow gminagielniow gminagieraltowice + gminaglinojeck gminaglogow gminagluchow + gminagluszyca gminagniew + gminagniewoszow gminagoczalkowicezdroj gminagodkowo gminagodow gminagodzieszewielkie + gminagolancz gminagoleszow gminagolina + gminagolubdobrzyn gminagoraj gminagorlice gminagorno @@ -1273,46 +1451,58 @@ gminagozd gminagrabow gminagrabowiec + gminagrajewo gminagranowo gminagrebocice gminagrebow gminagrodek + gminagrodeknaddunajcem gminagrodkow gminagrodziec gminagrojec gminagromadka + gminagronowoelblaskie gminagrudziadz gminagruta gminagrybow gminahaczow gminahalinow gminahansk + gminaharasiuki gminahazlach gminahrubieszow gminahyzne gminaimielno gminainowroclaw + gminaiwierzyce gminaiwoniczzdroj gminaizabelin + gminajadow gminajaktorow gminajanikowo gminajanowiec gminajanowpodlaski gminajaraczewo + gminajarocin gminajasienicarosielna gminajaslo + gminajastkow gminajastrowie gminajedlicze gminajedlinsk gminajedlnialetnisko gminajejkowice + gminajemielnica gminajerzmanowa gminajezewo - gminajodlowa + gminajeziorawielkie + gminajezowe gminajordanow gminajozefow gminajozefownadwisla gminajutrosin + gminakamien + gminakamienica gminakamieniec gminakamionka gminakarczmiska @@ -1323,8 +1513,10 @@ gminakielczyglow gminakikol gminakiszkowo + gminaklembow gminakleszczewo gminakleszczow + gminaklobuck gminakloczew gminaklomnice gminaklonowa @@ -1337,20 +1529,22 @@ gminakolczyglowy gminakoluszki gminakomancza + gminakomorniki gminakomprachcice gminakonopiska gminakonskowola + gminakorczyna gminakorycin gminakorzenna gminakosakowo gminakoscian + gminakoscielec gminakoscierzyna gminakosowlacki gminakostrzyn gminakotla gminakotun gminakozlow - gminakrajenka gminakrasnik gminakrasnobrod gminakrasnystaw @@ -1359,28 +1553,35 @@ gminakrokowa gminakrosnice gminakrupskimlyn + gminakrzanowice gminakrzemieniewo gminakrzymow gminakrzyzanowice gminakunice gminakunow gminakurow + gminakwidzyn gminakwilcz gminalabunie gminalambinowice gminalanckorona gminalapszenizne + gminalaskarzew gminalasowicewielkie gminalaszczow + gminalazy gminaleczyca gminaleczyce gminalegnickiepole gminalekaopatowska + gminalelkowo gminalelow gminalesna + gminalesnapodlaska gminalesznowola gminalezajsk gminalimanowa + gminalipinki gminalipnik gminalipowa gminalisiagora @@ -1391,7 +1592,9 @@ gminalopiennikgorny gminaluban gminalubartow + gminalubasz gminalubenia + gminalubianka gminalubicz gminalubiewo gminalubin @@ -1402,12 +1605,13 @@ gminaluzino gminaluzna gminalysomice + gminamagnuszew gminamakowpodhalanski gminamalbork gminamaldyty - gminamalkiniagorna gminamarcinowice gminamargonin + gminamarianowo gminamaslow gminamelgiew gminamichalowo @@ -1428,21 +1632,27 @@ gminaminskmazowiecki gminamirsk gminamlynary + gminamogielnica gminamogilany + gminamordy gminamoryn + gminamrozy gminamszana gminamszanadolna + gminamurow gminamycielin gminamysliborz - gminanaleczow + gminanadarzyn gminanawojowa gminanekla - gminanidzica gminaniebylec gminaniechlow gminaniedrzwicaduza gminaniegoslawice + gminaniwiska + gminanowaruda gminanowawiesleborska + gminanowemiasto gminanowemiastonadwarta gminanowosolna gminanowykaweczyn @@ -1462,9 +1672,12 @@ gminaosiekmaly gminaosielsko gminaostrowek + gminaostrowlubelski gminaostrowmazowiecka gminaostrowwielkopolski + gminaotyn gminaozarow + gminaozimek gminaozorkow gminapabianice gminapacanow @@ -1480,6 +1693,7 @@ gminapiaski gminapiatnica gminapilchowice + gminapionki gminaplesna gminapleszew gminaplonsk @@ -1496,8 +1710,10 @@ gminapopow gminaporaj gminapotegowo + gminapraszka gminaprazmow gminaprochowice + gminapromna gminaproszkow gminapruszczgdanski gminaprzeclaw @@ -1510,7 +1726,6 @@ gminaprzykona gminaprzylek gminaprzystajn - gminaprzytoczna gminapuchaczow gminapuck gminapulawy @@ -1523,19 +1738,25 @@ gminaradecznica gminaradkow gminaradlow + gminaradomin gminaradomyslnadsanem + gminaradoszyce gminaradwanice gminaradzilow + gminarawamazowiecka gminarenskawies gminarozprza gminarucianenida gminarudahuta gminarudna - gminarudniknadsanem + gminarudniki gminarychliki + gminarychtal gminaryczywol gminaryki gminarypin + gminarytro + gminarytwiany gminarzasnia gminarzeczyca gminarzepiennikstrzyzewski @@ -1547,11 +1768,15 @@ gminascinawa gminasedziejowice gminasepopol + gminaserokomla gminasicienko + gminasieciechow gminasiedlce gminasiemysl + gminasiennica gminasiennicarozana gminasienno + gminasiepraw gminasierakowice gminasiewierz gminaskarzyskokoscielne @@ -1573,6 +1798,7 @@ gminasosno gminaspiczyn gminastalowawola + gminastanislawow gminastarabiala gminastarakamienica gminastarakornica @@ -1580,12 +1806,14 @@ gminastaremiasto gminastarepole gminastarogardgdanski + gminastawiszyn gminastoczeklukowski gminastopnica gminastrykow gminastryszow gminastrzalkowo gminastrzelceopolskie + gminastrzelin gminastrzyzewice gminasubkowy gminasuchedniow @@ -1597,7 +1825,6 @@ gminasulmierzyce gminasulow gminasusiec - gminaswiebodzin gminaswierklaniec gminaswierzawa gminaswieszyno @@ -1605,6 +1832,7 @@ gminaszadek gminaszaflary gminaszczebrzeszyn + gminaszczekociny gminaszczercow gminaszczutowo gminaszczytna @@ -1615,28 +1843,35 @@ gminatarnowiec gminatarnowopolski gminateresin + gminaterespol gminatereszpol gminatluchowo gminatluszcz gminatokarnia + gminatomaszowlubelski gminatomice gminatoszek gminatrabkiwielkie + gminatrzebiatow gminatrzebinia gminatrzeszczany + gminatrzyciaz gminatuchow gminaturosnkoscielna gminatyczyn + gminatymbark + gminatyrawawoloska + gminauchanie gminaujazd - gminaulhowek + gminaulez gminaurszulin gminaurzedow gminawachock gminawadowicegorne gminawagrowiec gminawapielsk - gminawarlubie gminawasilkow + gminawawolnica gminawejherowo gminawiazow gminawiazowna @@ -1649,41 +1884,50 @@ gminawielkanieszawka gminawieniawa gminawieprz + gminawieruszow gminawierzchoslawice gminawijewo + gminawilczyn gminawilkow gminawilkowice + gminawinnica gminawinsko gminawiskitki - gminawisniowa gminawiszniamala gminawisznice gminawitkowo gminawladyslawow gminawlen + gminawlodawa gminawloszczowa gminawodzierady + gminawodzislaw gminawojcieszkow gminawojnicz gminawolakrzysztoporska gminawolanow + gminawolbrom gminawolczyn gminawolomin gminawolow gminawolsztyn + gminawreczycawielka gminawronki gminawyrzysk gminazabierzow gminazabno + gminazaklikow + gminazakroczym gminazakrzowek gminazaleszany gminazamosc + gminazarszyn gminazator - gminazawoja gminazawonia gminazbaszyn gminazbroslawice gminazdunskawola + gminazdzieszowice gminazebrzydowice gminazelazkow gminazgierz @@ -1691,6 +1935,7 @@ gminaziebice gminazielonki gminazlawieswielka + gminazmudz gminaznin gminazolynia gminazukowice @@ -1705,12 +1950,15 @@ gorzowslaski gorzowwielkopolski gostynin + grajewo grodziskmazowiecki grudziadz gryfino + gryfowslaski hel hrubieszow inowroclaw + izbicakujawska jablonowopomorskie janowiecwielkopolski janowlubelski @@ -1719,6 +1967,7 @@ jaslo jastrzebiezdroj jawor + jaworzno jedlinazdroj jelczlaskowice jeleniagora @@ -1727,14 +1976,18 @@ kalety kalisz kalwariazebrzydowska + kanczuga karczew kartuzy katowice + katywroclawskie + kazimierzdolny kcynia kedzierzynkozle kepno ketrzyn kielce + klodawa klodzko knurow kobylka @@ -1763,6 +2016,7 @@ krotoszyn krzeszowice krzyzwielkopolski + ksiazwielkopolski kujawskopomorskie labiszyn ladekzdroj @@ -1772,15 +2026,16 @@ leba lebork leczna + ledziny legionowo legnica leszno lewinbrzeski lezajsk lipno + lipsko lodz lodzkie - lomza lowicz luban lubartow @@ -1805,13 +2060,17 @@ minskmazowiecki mosina mragowo + mragowski + mszanadolna mszczonow muszyna myslowice + myszkow naklonadnotecia nisko nowadeba nowasarzyna + nowemiasteczko noweskalmierzyce nowogard nowogrodziec @@ -1824,8 +2083,10 @@ obrzycko olkusz olsztyn + opinogoragorna opoczno opole + opolelubelskie osieczna osiecznica ostroda @@ -1839,6 +2100,7 @@ piaseczno piaski piastow + piechowice piekaryslaskie piensk pila @@ -1850,6 +2112,7 @@ podkarpackie podkowalesna polczynzdroj + pomorskie poniec powiataleksandrowski powiataugustowski @@ -1866,6 +2129,7 @@ powiatbrodnicki powiatbrzeski powiatbrzozowski + powiatbuski powiatbydgoski powiatchelminski powiatchelmski @@ -1880,6 +2144,8 @@ powiatdabrowski powiatdebicki powiatdzialdowski + powiatdzierzoniowski + powiatelblaski powiatelcki powiatgarwolinski powiatgizycki @@ -1894,8 +2160,11 @@ powiatgostynski powiatgrojecki powiatgrudziadzki + powiatgryficki powiatgryfinski + powiathajnowski powiathrubieszowski + powiatilawski powiatinowroclawski powiatjanowski powiatjarocinski @@ -1928,10 +2197,14 @@ powiatkrasnostawski powiatkrosnienski powiatkrotoszynski + powiatkutnowski powiatlaski powiatleborski powiatleczycki + powiatleczynski + powiatlegnicki powiatleski + powiatleszczynski powiatlezajski powiatlimanowski powiatlipnowski @@ -1971,6 +2244,7 @@ powiatoleski powiatolesnicki powiatolkuski + powiatolsztynski powiatopatowski powiatopoczynski powiatopolski @@ -1982,6 +2256,7 @@ powiatpabianicki powiatpiaseczynski powiatpilski + powiatpinczowski powiatpiotrkowski powiatpleszewski powiatplocki @@ -1991,10 +2266,13 @@ powiatpolkowicki powiatpoznanski powiatproszowicki + powiatpruszkowski + powiatprzasnyski powiatprzemyski powiatprzeworski powiatpszczynski powiatpulawski + powiatpultuski powiatraciborski powiatradomski powiatradziejowski @@ -2009,9 +2287,12 @@ powiatsandomierski powiatsanocki powiatsepolenski + powiatsiedlecki powiatsiemiatycki powiatsieradzki + powiatsierpecki powiatskarzyski + powiatskierniewicki powiatslubicki powiatslupecki powiatslupski @@ -2030,6 +2311,7 @@ powiatsuski powiatswidnicki powiatswidwinski + powiatswiebodzinski powiatszamotulski powiatszczycienski powiatsztumski @@ -2054,6 +2336,7 @@ powiatwielunski powiatwieruszowski powiatwloclawski + powiatwlodawski powiatwloszczowski powiatwodzislawski powiatwolominski @@ -2062,9 +2345,11 @@ powiatwroclawski powiatwrzesinski powiatwschowski + powiatwysokomazowiecki powiatwyszkowski powiatzaganski powiatzambrowski + powiatzamojski powiatzarski powiatzawiercianski powiatzdunskowolski @@ -2087,10 +2372,13 @@ pszczyna puck pulawy + pyskowice rabkazdroj + raciaz raciborz radom radomsko + radymno radziejow radzionkow radzynpodlaski @@ -2149,6 +2437,7 @@ szamocin szczawnica szczecin + szczytno szklarskaporeba szprotawa sztum @@ -2174,6 +2463,7 @@ wadowice wagrowiec walbrzych + warminskomazurskie warszawa wasosz wegrow @@ -2201,12 +2491,14 @@ zary zawidow zdunskawola + zelechow zgierz zgorzelec zielonagora zielonka zlotoryja zory + zwolen zyrardow zywiec diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 34d6814c0..adbf25d24 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -15,13 +15,13 @@ Sign in with the student or parent account Enter the VULCAN diary symbol - Email + Email or nick Password + Log Symbol Sign in Logging in… Synchronization… - This email address is invalid This password is too short This password is incorrect Student not found. Check the symbol diff --git a/app/src/test/java/io/github/wulkanowy/data/repositories/remote/SessionRemoteTest.kt b/app/src/test/java/io/github/wulkanowy/data/repositories/remote/SessionRemoteTest.kt index 61fa06e24..882fa0355 100644 --- a/app/src/test/java/io/github/wulkanowy/data/repositories/remote/SessionRemoteTest.kt +++ b/app/src/test/java/io/github/wulkanowy/data/repositories/remote/SessionRemoteTest.kt @@ -22,10 +22,10 @@ class SessionRemoteTest { @Test fun testRemoteAll() { - doReturn(Single.just(listOf(Pupil("", "", "", "test", "", "")))) + doReturn(Single.just(listOf(Pupil("", "", "", "test", "", "", Api.LoginType.AUTO)))) .`when`(mockApi).getPupils() - val students = SessionRemote(mockApi).getConnectedStudents("", "", "").blockingGet() + val students = SessionRemote(mockApi).getConnectedStudents("", "", "", "http://fakelog.cf").blockingGet() assertEquals(1, students.size) assertEquals("test", students.first().studentName) } diff --git a/app/src/test/java/io/github/wulkanowy/ui/login/form/LoginFormPresenterTest.kt b/app/src/test/java/io/github/wulkanowy/ui/login/form/LoginFormPresenterTest.kt index b365fdb27..4be95c2df 100644 --- a/app/src/test/java/io/github/wulkanowy/ui/login/form/LoginFormPresenterTest.kt +++ b/app/src/test/java/io/github/wulkanowy/ui/login/form/LoginFormPresenterTest.kt @@ -1,6 +1,7 @@ package io.github.wulkanowy.ui.login.form import io.github.wulkanowy.TestSchedulers +import io.github.wulkanowy.api.Api import io.github.wulkanowy.data.db.entities.Student import io.github.wulkanowy.data.repositories.SessionRepository import io.github.wulkanowy.ui.login.LoginErrorHandler @@ -39,65 +40,51 @@ class LoginFormPresenterTest { } @Test - fun emptyEmailLoginTest() { - presenter.attemptLogin("", "test123", "test") + fun emptyNicknameLoginTest() { + presenter.attemptLogin("", "test123", "test", "https://fakelog.cf") - verify(loginFormView).setErrorEmailRequired() + verify(loginFormView).setErrorNicknameRequired() verify(loginFormView, never()).setErrorPassRequired(false) verify(loginFormView, never()).setErrorSymbolRequire() - verify(loginFormView, never()).setErrorEmailInvalid() - verify(loginFormView, never()).setErrorPassInvalid(false) - } - - @Test - fun invalidEmailLoginTest() { - presenter.attemptLogin("test", "test123", "test") - - verify(loginFormView, never()).setErrorEmailRequired() - verify(loginFormView, never()).setErrorPassRequired(false) - verify(loginFormView, never()).setErrorSymbolRequire() - verify(loginFormView).setErrorEmailInvalid() verify(loginFormView, never()).setErrorPassInvalid(false) } @Test fun emptyPassLoginTest() { - presenter.attemptLogin("@", "", "test") + presenter.attemptLogin("@", "", "test", "https://fakelog.cf") - verify(loginFormView, never()).setErrorEmailRequired() + verify(loginFormView, never()).setErrorNicknameRequired() verify(loginFormView).setErrorPassRequired(true) verify(loginFormView, never()).setErrorSymbolRequire() - verify(loginFormView, never()).setErrorEmailInvalid() verify(loginFormView, never()).setErrorPassInvalid(false) } @Test fun invalidPassLoginTest() { - presenter.attemptLogin("@", "123", "test") + presenter.attemptLogin("@", "123", "test", "https://fakelog.cf") - verify(loginFormView, never()).setErrorEmailRequired() + verify(loginFormView, never()).setErrorNicknameRequired() verify(loginFormView, never()).setErrorPassRequired(true) verify(loginFormView, never()).setErrorSymbolRequire() - verify(loginFormView, never()).setErrorEmailInvalid() verify(loginFormView).setErrorPassInvalid(true) } @Test fun emptySymbolLoginTest() { doReturn(Single.just(emptyList())) - .`when`(repository).getConnectedStudents(anyString(), anyString(), anyString()) - presenter.attemptLogin("@", "12345", "") - presenter.attemptLogin("@", "12345", "") + .`when`(repository).getConnectedStudents(anyString(), anyString(), anyString(), anyString()) + presenter.attemptLogin("@", "123456", "", "https://fakelog.cf") + presenter.attemptLogin("@", "123456", "", "https://fakelog.cf") verify(loginFormView).setErrorSymbolRequire() } @Test fun loginTest() { - val studentTest = Student(email = "test@", password = "123") + val studentTest = Student(email = "test@", password = "123", endpoint = "https://fakelog.cf", loginType = "AUTO") doReturn(Single.just(listOf(studentTest))) - .`when`(repository).getConnectedStudents(anyString(), anyString(), anyString()) - presenter.attemptLogin("@", "12345", "test") + .`when`(repository).getConnectedStudents(anyString(), anyString(), anyString(), anyString()) + presenter.attemptLogin("@", "123456", "test", "https://fakelog.cf") verify(loginFormView).hideSoftKeyboard() verify(loginFormView).showLoginProgress(true) @@ -109,8 +96,8 @@ class LoginFormPresenterTest { @Test fun loginEmptyTest() { doReturn(Single.just(emptyList())) - .`when`(repository).getConnectedStudents(anyString(), anyString(), anyString()) - presenter.attemptLogin("@", "12345", "test") + .`when`(repository).getConnectedStudents(anyString(), anyString(), anyString(), anyString()) + presenter.attemptLogin("@", "123456", "test", "https://fakelog.cf") verify(loginFormView).hideSoftKeyboard() verify(loginFormView).showLoginProgress(true) @@ -122,9 +109,9 @@ class LoginFormPresenterTest { @Test fun loginEmptyTwiceTest() { doReturn(Single.just(emptyList())) - .`when`(repository).getConnectedStudents(anyString(), anyString(), anyString()) - presenter.attemptLogin("@", "12345", "") - presenter.attemptLogin("@", "12345", "test") + .`when`(repository).getConnectedStudents(anyString(), anyString(), anyString(), anyString()) + presenter.attemptLogin("@", "123456", "", "https://fakelog.cf") + presenter.attemptLogin("@", "123456", "test", "https://fakelog.cf") verify(loginFormView, times(2)).hideSoftKeyboard() verify(loginFormView, times(2)).showLoginProgress(true) @@ -139,8 +126,8 @@ class LoginFormPresenterTest { fun loginErrorTest() { val testException = RuntimeException() doReturn(Single.error>(testException)) - .`when`(repository).getConnectedStudents(anyString(), anyString(), anyString()) - presenter.attemptLogin("@", "12345", "test") + .`when`(repository).getConnectedStudents(anyString(), anyString(), anyString(), anyString()) + presenter.attemptLogin("@", "123456", "test", "https://fakelog.cf") verify(loginFormView).hideSoftKeyboard() verify(loginFormView).showLoginProgress(true) diff --git a/app/src/test/java/io/github/wulkanowy/ui/login/options/LoginOptionsPresenterTest.kt b/app/src/test/java/io/github/wulkanowy/ui/login/options/LoginOptionsPresenterTest.kt index f94ef8098..1a2a602b0 100644 --- a/app/src/test/java/io/github/wulkanowy/ui/login/options/LoginOptionsPresenterTest.kt +++ b/app/src/test/java/io/github/wulkanowy/ui/login/options/LoginOptionsPresenterTest.kt @@ -1,6 +1,7 @@ package io.github.wulkanowy.ui.login.options import io.github.wulkanowy.TestSchedulers +import io.github.wulkanowy.api.Api import io.github.wulkanowy.data.ErrorHandler import io.github.wulkanowy.data.db.entities.Student import io.github.wulkanowy.data.repositories.SessionRepository @@ -25,7 +26,7 @@ class LoginOptionsPresenterTest { private lateinit var presenter: LoginOptionsPresenter - private val testStudent by lazy { Student(email = "test", password = "test123") } + private val testStudent by lazy { Student(email = "test", password = "test123", endpoint = "https://fakelog.cf", loginType = "AUTO") } private val testException by lazy { RuntimeException("Problem") } diff --git a/build.gradle b/build.gradle index 59b3456c7..ad4fa2831 100644 --- a/build.gradle +++ b/build.gradle @@ -9,7 +9,7 @@ buildscript { } dependencies { classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" - classpath 'com.android.tools.build:gradle:3.2.0' + classpath 'com.android.tools.build:gradle:3.2.1' classpath "io.fabric.tools:gradle:1.26.0" classpath "com.google.gms:oss-licenses:0.9.2" classpath "com.github.triplet.gradle:play-publisher:1.2.2"