From 7802d39417d65c2eec07c2b6fc8a87a8adc44e37 Mon Sep 17 00:00:00 2001 From: aklyushova Date: Wed, 19 Feb 2025 11:02:09 +0300 Subject: [PATCH 1/4] add History Adapter --- .../java/ru/myitschool/work/ui/History.java | 41 ++++++++++++ .../ru/myitschool/work/ui/HistoryAdapter.java | 66 +++++++++++++++++++ .../work/ui/InformationFragment.java | 11 +++- .../main/java/ru/myitschool/work/ui/User.java | 3 +- .../main/res/layout/fragment_information.xml | 6 ++ app/src/main/res/layout/item_history.xml | 39 +++++++++++ 6 files changed, 163 insertions(+), 3 deletions(-) create mode 100644 app/src/main/java/ru/myitschool/work/ui/History.java create mode 100644 app/src/main/java/ru/myitschool/work/ui/HistoryAdapter.java create mode 100644 app/src/main/res/layout/item_history.xml diff --git a/app/src/main/java/ru/myitschool/work/ui/History.java b/app/src/main/java/ru/myitschool/work/ui/History.java new file mode 100644 index 0000000..cd03692 --- /dev/null +++ b/app/src/main/java/ru/myitschool/work/ui/History.java @@ -0,0 +1,41 @@ +package ru.myitschool.work.ui; + +public class History { + private Long time; + private String nameReader; + private int type; //1 - qr 2 - карта + + + public History(Long time, String nameReader, int passageType) { + this.time = time; + this.nameReader = nameReader; + this.type = passageType; + } + + public Long getTime() { + return time; + } + + public void setTime(Long time) { + this.time = time; + } + + public String getNameReader() { + return nameReader; + } + + public void setNameReader(String nameReader) { + this.nameReader = nameReader; + } + + public int getPassageType() { + return type; + } + + public void setPassageType(int passageType) { + this.type = passageType; + } + + + +} diff --git a/app/src/main/java/ru/myitschool/work/ui/HistoryAdapter.java b/app/src/main/java/ru/myitschool/work/ui/HistoryAdapter.java new file mode 100644 index 0000000..b19b001 --- /dev/null +++ b/app/src/main/java/ru/myitschool/work/ui/HistoryAdapter.java @@ -0,0 +1,66 @@ +package ru.myitschool.work.ui; + +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; + +import java.util.ArrayList; +import java.util.List; + +import ru.myitschool.work.databinding.ItemHistoryBinding; + +public class HistoryAdapter extends RecyclerView.Adapter { + + private final List data = new ArrayList<>(); + + @NonNull + @Override + public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + return new ViewHolder( + ItemHistoryBinding.inflate( + LayoutInflater.from(parent.getContext()), + parent, + false + ).getRoot() + ); + + } + + @Override + public void onBindViewHolder(@NonNull ViewHolder holder, int position) { + holder.bind(data.get(position)); + } + + @Override + public int getItemCount() { + return data.size(); + } + + public void updateData(List newData) { + data.clear(); + data.addAll(newData); + notifyDataSetChanged(); + } + + public class ViewHolder extends RecyclerView.ViewHolder { + private final ItemHistoryBinding binding; + + public ViewHolder(@NonNull View itemView) { + super(itemView); + binding = ItemHistoryBinding.bind(itemView); + } + public void bind(History item) { + binding.time.setText(item.getTime().toString()); + binding.nameReader.setText(item.getNameReader()); + if (item.getPassageType() == 1){ + binding.type.setText("QR-code"); + } + else{ + binding.type.setText("Карта"); + } + } + } +} \ No newline at end of file diff --git a/app/src/main/java/ru/myitschool/work/ui/InformationFragment.java b/app/src/main/java/ru/myitschool/work/ui/InformationFragment.java index a050199..8c60af6 100644 --- a/app/src/main/java/ru/myitschool/work/ui/InformationFragment.java +++ b/app/src/main/java/ru/myitschool/work/ui/InformationFragment.java @@ -15,6 +15,8 @@ import androidx.fragment.app.FragmentResultListener; import com.squareup.picasso.Picasso; +import java.util.ArrayList; + import retrofit2.Call; import retrofit2.Callback; import retrofit2.Response; @@ -28,6 +30,7 @@ import ru.myitschool.work.ui.qr.scan.QrScanFragment; public class InformationFragment extends Fragment { FragmentInformationBinding binding; SharedPreferences sharedPreferences; + ArrayList history = new ArrayList<>(); @Nullable @Override @@ -48,13 +51,17 @@ public class InformationFragment extends Fragment { onClickRefresh(); }); - binding.scan.setOnClickListener(view1 -> { + binding.scan.setOnClickListener(view2 -> { onClickScan(); }); - binding.logout.setOnClickListener(view2 -> { + binding.logout.setOnClickListener(view3 -> { onClickLogout(); }); + //TODO: SERVER ZAGUZKA LISTAAAAAAAAAAAAAAA + HistoryAdapter adapter = new HistoryAdapter(); + binding.historylist.setAdapter(adapter); + adapter.updateData(history); //getParentFragmentManager() requireActivity().getSupportFragmentManager().setFragmentResultListener(QrScanDestination.REQUEST_KEY, getViewLifecycleOwner(), (requestKey, result) -> { diff --git a/app/src/main/java/ru/myitschool/work/ui/User.java b/app/src/main/java/ru/myitschool/work/ui/User.java index aec09dc..8b02507 100644 --- a/app/src/main/java/ru/myitschool/work/ui/User.java +++ b/app/src/main/java/ru/myitschool/work/ui/User.java @@ -1,6 +1,7 @@ package ru.myitschool.work.ui; -public class User { +public class +User { private int id; private String login; diff --git a/app/src/main/res/layout/fragment_information.xml b/app/src/main/res/layout/fragment_information.xml index 2ddcf22..7a129a8 100644 --- a/app/src/main/res/layout/fragment_information.xml +++ b/app/src/main/res/layout/fragment_information.xml @@ -48,5 +48,11 @@ android:text="@string/error" android:layout_width="wrap_content" android:layout_height="wrap_content"/> + \ No newline at end of file diff --git a/app/src/main/res/layout/item_history.xml b/app/src/main/res/layout/item_history.xml new file mode 100644 index 0000000..be3b98d --- /dev/null +++ b/app/src/main/res/layout/item_history.xml @@ -0,0 +1,39 @@ + + + + + + + + + + + + \ No newline at end of file From 148df734a94fd6a7ecdd186bfa82c6368ed4496e Mon Sep 17 00:00:00 2001 From: SunZar <121431240+SunZar@users.noreply.github.com> Date: Wed, 19 Feb 2025 12:38:25 +0300 Subject: [PATCH 2/4] feat: All needed DTO added --- .../ru/myitschool/work/dto/HistoryDto.java | 28 +++++ .../java/ru/myitschool/work/dto/RoleDto.java | 17 +++ .../java/ru/myitschool/work/dto/UserDto.java | 115 ++++++++++++++++++ .../ru/myitschool/work/ui/HistoryAdapter.java | 5 +- .../work/ui/InformationFragment.java | 2 +- .../ru/myitschool/work/ui/LoginFragment.java | 28 ++++- .../main/java/ru/myitschool/work/ui/User.java | 8 +- app/src/main/res/layout/fragment_login.xml | 7 ++ 8 files changed, 205 insertions(+), 5 deletions(-) create mode 100644 app/src/main/java/ru/myitschool/work/dto/HistoryDto.java create mode 100644 app/src/main/java/ru/myitschool/work/dto/RoleDto.java create mode 100644 app/src/main/java/ru/myitschool/work/dto/UserDto.java diff --git a/app/src/main/java/ru/myitschool/work/dto/HistoryDto.java b/app/src/main/java/ru/myitschool/work/dto/HistoryDto.java new file mode 100644 index 0000000..7ae46a8 --- /dev/null +++ b/app/src/main/java/ru/myitschool/work/dto/HistoryDto.java @@ -0,0 +1,28 @@ +package ru.myitschool.work.dto; + +import androidx.annotation.Nullable; + +import com.google.gson.annotations.SerializedName; + +public class HistoryDto { + @Nullable + @SerializedName("id") + public Integer id; + + @Nullable + @SerializedName("idUser") + public Integer idUser; + + @Nullable + @SerializedName("time") + public Long time; + + @Nullable + @SerializedName("nameReader") + public String nameReader; + + @Nullable + @SerializedName("type") + public String type; + +} diff --git a/app/src/main/java/ru/myitschool/work/dto/RoleDto.java b/app/src/main/java/ru/myitschool/work/dto/RoleDto.java new file mode 100644 index 0000000..0f0cce5 --- /dev/null +++ b/app/src/main/java/ru/myitschool/work/dto/RoleDto.java @@ -0,0 +1,17 @@ +package ru.myitschool.work.dto; + +import androidx.annotation.Nullable; + +import com.google.gson.annotations.SerializedName; + +public class RoleDto { + @Nullable + @SerializedName("idUser") + public Integer idUser; + + @Nullable + @SerializedName("status") + public int status; + + +} diff --git a/app/src/main/java/ru/myitschool/work/dto/UserDto.java b/app/src/main/java/ru/myitschool/work/dto/UserDto.java new file mode 100644 index 0000000..3caa535 --- /dev/null +++ b/app/src/main/java/ru/myitschool/work/dto/UserDto.java @@ -0,0 +1,115 @@ +package ru.myitschool.work.dto; + +import androidx.annotation.Nullable; + +import com.google.gson.annotations.SerializedName; + +public class UserDto { + @Nullable + @SerializedName("username") + public String username; + + @Nullable + @SerializedName("password") + public String password; + + @Nullable + @SerializedName("photo") + public String photo; + + @Nullable + @SerializedName("lastVisit") + public Long lastVisit; + + @Nullable + @SerializedName("idUser") + public Integer idUser; + + @Nullable + @SerializedName("status") + public int status; + + @Nullable + @SerializedName("position") + public String position; + + public UserDto(@Nullable String username, @Nullable String password, @Nullable String photo, @Nullable Long lastVisit, @Nullable Integer idUser, int status, @Nullable String position) { + this.username = username; + this.password = password; + this.photo = photo; + this.lastVisit = lastVisit; + this.idUser = idUser; + this.status = status; + this.position = position; + } + + @Nullable + public String getPosition() { + return position; + } + + public void setPosition(@Nullable String position) { + this.position = position; + } + + @Nullable + public String getUsername() { + return username; + } + + public void setUsername(@Nullable String username) { + this.username = username; + } + + @Nullable + public String getPassword() { + return password; + } + + public void setPassword(@Nullable String password) { + this.password = password; + } + + @Nullable + public String getPhoto() { + return photo; + } + + public void setPhoto(@Nullable String photo) { + this.photo = photo; + } + + @Nullable + public Long getLastVisit() { + return lastVisit; + } + + public void setLastVisit(@Nullable Long lastVisit) { + this.lastVisit = lastVisit; + } + + @Nullable + public Integer getIdUser() { + return idUser; + } + + public void setIdUser(@Nullable Integer idUser) { + this.idUser = idUser; + } + + public int getStatus() { + return status; + } + + public void setStatus(int status) { + this.status = status; + } + + + + + + + + +} diff --git a/app/src/main/java/ru/myitschool/work/ui/HistoryAdapter.java b/app/src/main/java/ru/myitschool/work/ui/HistoryAdapter.java index b19b001..bf38fc2 100644 --- a/app/src/main/java/ru/myitschool/work/ui/HistoryAdapter.java +++ b/app/src/main/java/ru/myitschool/work/ui/HistoryAdapter.java @@ -1,5 +1,6 @@ package ru.myitschool.work.ui; +import android.annotation.SuppressLint; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -52,8 +53,10 @@ public class HistoryAdapter extends RecyclerView.Adapter { onClickLogout(); }); - //TODO: SERVER ZAGUZKA LISTAAAAAAAAAAAAAAA + //TODO: SERVER ZAGRUZKA LISTAAAAAAAAAAAAAAA HistoryAdapter adapter = new HistoryAdapter(); binding.historylist.setAdapter(adapter); adapter.updateData(history); diff --git a/app/src/main/java/ru/myitschool/work/ui/LoginFragment.java b/app/src/main/java/ru/myitschool/work/ui/LoginFragment.java index 25365e5..4930adf 100644 --- a/app/src/main/java/ru/myitschool/work/ui/LoginFragment.java +++ b/app/src/main/java/ru/myitschool/work/ui/LoginFragment.java @@ -49,6 +49,7 @@ public class LoginFragment extends Fragment { } + @Override public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) { if (binding.username.getText().length() >= 3 && binding.username.getText().toString().matches("[0-9a-zA-Z]+") && (binding.username.getText().toString().charAt(0) + "").matches("[0-9]+")) { @@ -69,14 +70,37 @@ public class LoginFragment extends Fragment { } }); + binding.password.addTextChangedListener(new TextWatcher() { + @Override + public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) { + + } + + @Override + public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) { + if (binding.password.getText().length() >= 5) { + binding.login.setEnabled(true); + } else { + binding.login.setEnabled(false); + } + if (binding.error.getVisibility() == View.VISIBLE) { + binding.error.setVisibility(View.GONE); + } + } + + @Override + public void afterTextChanged(Editable editable) { + + } + }); binding.login.setOnClickListener(view1 -> { if (binding.login.isEnabled()) { if (binding.error.getVisibility() == View.VISIBLE) { binding.error.setVisibility(View.GONE); - //binding.log.setText("click enabled"); + } - //binding.log.setText("click"); + onClickLogin(); } }); diff --git a/app/src/main/java/ru/myitschool/work/ui/User.java b/app/src/main/java/ru/myitschool/work/ui/User.java index 8b02507..92c8f5b 100644 --- a/app/src/main/java/ru/myitschool/work/ui/User.java +++ b/app/src/main/java/ru/myitschool/work/ui/User.java @@ -9,14 +9,16 @@ User { private String photo; private String position; private String lastVisit; + private int role; // 1 - сотрудник 2 - админ - public User(int id, String login, String name, String photo, String position, String lastVisit) { + public User(int id, String login, String name, String photo, String position, String lastVisit, int role) { this.id = id; this.login = login; this.name = name; this.photo = photo; this.position = position; this.lastVisit = lastVisit; + this.role = role; } public int getId() { @@ -66,4 +68,8 @@ User { public void setLastVisit(String lastVisit) { this.lastVisit = lastVisit; } + public int getRole(int role){return role;} + public void setRole(int role){this.role = role;} + + } diff --git a/app/src/main/res/layout/fragment_login.xml b/app/src/main/res/layout/fragment_login.xml index 08698da..3e950dc 100644 --- a/app/src/main/res/layout/fragment_login.xml +++ b/app/src/main/res/layout/fragment_login.xml @@ -11,6 +11,13 @@ android:layout_height="wrap_content" android:hint="@string/username"/> + + +