added Admin

This commit is contained in:
aklyushova 2025-02-20 14:41:08 +03:00 committed by SunZar
parent ae7a743d41
commit 6edfdf475e
9 changed files with 201 additions and 9 deletions

View File

@ -116,8 +116,9 @@ public class UserRepositoryImpl implements UserRepository, SignUserRepository {
final Long lastVisit = user.lastVisit; final Long lastVisit = user.lastVisit;
final Integer idUser = user.idUser; final Integer idUser = user.idUser;
final String position = user.position; final String position = user.position;
final boolean action = user.action;
if (idUser != null && username != null){ if (idUser != null && username != null){
return new UserEntity(username1, photo, lastVisit, idUser, position); return new UserEntity(username1, photo, lastVisit, idUser, position, action);
} }
else{ else{
return null; return null;

View File

@ -1,5 +1,6 @@
package ru.myitschool.work.data.dto; package ru.myitschool.work.data.dto;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable; import androidx.annotation.Nullable;
import com.google.gson.annotations.SerializedName; import com.google.gson.annotations.SerializedName;
@ -33,7 +34,18 @@ public class UserDto {
@SerializedName("position") @SerializedName("position")
public String 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) { @Nullable
@SerializedName("action")
public boolean action;
@Nullable
public boolean getAction() {
return action;
}
public UserDto(@Nullable String username, @Nullable String password, @Nullable String photo,
@Nullable Long lastVisit, @Nullable Integer idUser, int status,
@Nullable String position, @NonNull boolean action) {
this.username = username; this.username = username;
this.password = password; this.password = password;
this.photo = photo; this.photo = photo;
@ -41,6 +53,7 @@ public class UserDto {
this.idUser = idUser; this.idUser = idUser;
this.status = status; this.status = status;
this.position = position; this.position = position;
this.action = action;
} }
@Nullable @Nullable

View File

@ -1,5 +1,6 @@
package ru.myitschool.work.domain.entities; package ru.myitschool.work.domain.entities;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable; import androidx.annotation.Nullable;
import com.google.gson.annotations.SerializedName; import com.google.gson.annotations.SerializedName;
@ -25,13 +26,22 @@ public class UserEntity {
@Nullable @Nullable
@SerializedName("position") @SerializedName("position")
public String position; public String position;
@Nullable
@SerializedName("action")
public boolean action;
public UserEntity(@Nullable String username, @Nullable String photo, @Nullable Long lastVisit, @Nullable Integer id, @Nullable String position) { @Nullable
public boolean getAction() {
return action;
}
public UserEntity(@Nullable String username, @Nullable String photo, @Nullable Long lastVisit, @Nullable Integer id, @Nullable String position, @NonNull boolean action) {
this.username = username; this.username = username;
this.photo = photo; this.photo = photo;
this.lastVisit = lastVisit; this.lastVisit = lastVisit;
this.id = id; this.id = id;
this.position = position; this.position = position;
this.action = action;
} }
@Nullable @Nullable

View File

@ -4,15 +4,22 @@ import android.os.Bundle;
import android.util.Log; import android.util.Log;
import androidx.appcompat.app.AppCompatActivity; import androidx.appcompat.app.AppCompatActivity;
import androidx.lifecycle.LiveData;
import androidx.lifecycle.ViewModelProvider;
import androidx.navigation.NavController; import androidx.navigation.NavController;
import androidx.navigation.fragment.NavHostFragment; import androidx.navigation.fragment.NavHostFragment;
import ru.myitschool.work.R; import ru.myitschool.work.R;
import ru.myitschool.work.databinding.ActivityRootBinding; import ru.myitschool.work.databinding.ActivityRootBinding;
import ru.myitschool.work.databinding.FragmentProfileBinding;
import ru.myitschool.work.domain.entities.UserEntity;
import ru.myitschool.work.ui.profile.ProfileViewModel;
import ru.myitschool.work.utils.PreferenceManager;
public class RootActivity extends AppCompatActivity { public class RootActivity extends AppCompatActivity {
private ActivityRootBinding binding; private ActivityRootBinding binding;
@Override @Override
protected void onCreate(Bundle savedInstanceState) { protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
@ -30,6 +37,7 @@ public class RootActivity extends AppCompatActivity {
} }
return true; return true;
}); });
} }
private void onClickNavHistory() { private void onClickNavHistory() {

View File

@ -1,4 +1,62 @@
package ru.myitschool.work.ui.admin; package ru.myitschool.work.ui.admin;
public class AdminFragment { import android.os.Bundle;
import android.view.View;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;
import androidx.lifecycle.ViewModelProvider;
import androidx.navigation.Navigation;
import ru.myitschool.work.R;
import ru.myitschool.work.databinding.FragmentAdminBinding;
import ru.myitschool.work.databinding.FragmentProfileBinding;
import ru.myitschool.work.domain.GetUserByUsernameUseCase;
import ru.myitschool.work.domain.entities.UserEntity;
import ru.myitschool.work.ui.profile.ProfileViewModel;
import ru.myitschool.work.utils.Constants;
import ru.myitschool.work.utils.PreferenceManager;
public class AdminFragment extends Fragment {
private static final String KEY_USER_USERNAME = "username";
private FragmentAdminBinding binding;
private PreferenceManager preferenceManager;
private AdminViewModel viewModel;
public AdminFragment() {
super(R.layout.fragment_admin);
}
@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
binding = FragmentAdminBinding.bind(view);
preferenceManager = new PreferenceManager(this.getContext());
viewModel = new ViewModelProvider(this).get(AdminViewModel.class);
binding.searchButton.setOnClickListener(view1 -> {
String usernameSearch = binding.search.getText().toString();
// TODO : к базе
});
}
@Override
public void onDestroyView() {
binding = null;
super.onDestroyView();
}
public static Bundle getBundle(@NonNull String id) {
Bundle bundle = new Bundle();
bundle.putString(KEY_USER_USERNAME, id);
return bundle;
}
} }

View File

@ -1,4 +1,91 @@
package ru.myitschool.work.ui.admin; package ru.myitschool.work.ui.admin;
public class AdminViewModel { import android.util.Log;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.lifecycle.LiveData;
import androidx.lifecycle.MutableLiveData;
import androidx.lifecycle.ViewModel;
import java.util.List;
import ru.myitschool.work.data.UserRepositoryImpl;
import ru.myitschool.work.domain.GetAllUserHistoryUseCase;
import ru.myitschool.work.domain.GetUserByUsernameUseCase;
import ru.myitschool.work.domain.entities.HistoryEntity;
import ru.myitschool.work.domain.entities.Status;
import ru.myitschool.work.domain.sign.IsUserExistUseCase;
import ru.myitschool.work.ui.information.InformationViewModel;
import ru.myitschool.work.ui.profile.ProfileViewModel;
public class AdminViewModel extends ViewModel {
private final MutableLiveData<AdminViewModel.State> mutableStateLiveData = new MutableLiveData<>();
public final LiveData<AdminViewModel.State> stateLiveData = mutableStateLiveData;
public final GetUserByUsernameUseCase getUserByUsernameUseCase = new GetUserByUsernameUseCase(
UserRepositoryImpl.getInstance()
);
public final GetAllUserHistoryUseCase getAllUserHistoryListUseCase = new GetAllUserHistoryUseCase(
UserRepositoryImpl.getInstance()
);
private final IsUserExistUseCase isUserExistUseCase = new IsUserExistUseCase(
UserRepositoryImpl.getInstance()
);
public void load(@NonNull String username) {
mutableStateLiveData.setValue(new AdminViewModel.State(null, null, true));
postUserByUsername(username);
}
private void postUserByUsername(String username) {
final String currentUsername = username;
if (currentUsername == null || currentUsername.isEmpty()) {
return;
}
isUserExistUseCase.execute(currentUsername, status -> {
if (status.getValue() == null || status.getErrors() != null) {
Log.d("tagg", status.getErrors().toString());
}
});
getUserByUsernameUseCase.execute(currentUsername, status ->{
if (status.getValue() == null || status.getErrors() != null) {
Log.d("tagg", status.getErrors().toString());
}
});
}
public class State {
@Nullable
private final String errorMessage;
@Nullable
private final List<HistoryEntity> itemsHistory;
private final boolean isLoading;
public State(@Nullable String errorMessage, @Nullable List<HistoryEntity> itemsHistory, boolean isLoading) {
this.errorMessage = errorMessage;
this.itemsHistory = itemsHistory;
this.isLoading = isLoading;
}
@Nullable
public String getErrorMessage() {
return errorMessage;
}
@Nullable
public List<HistoryEntity> getItemsHistory() {
return itemsHistory;
}
public boolean isLoading() {
return isLoading;
}
}
} }

View File

@ -28,9 +28,8 @@ public class InformationViewModel extends ViewModel {
UserRepositoryImpl.getInstance() UserRepositoryImpl.getInstance()
); );
/*public ListViewModel() {
update();
}*/
private String username; private String username;
@ -39,7 +38,7 @@ public class InformationViewModel extends ViewModel {
} }
public void load() { public void load() {
mutableStateAllUserHistoryLiveData.setValue(new InformationViewModel.State(null, null, false)); mutableStateAllUserHistoryLiveData.setValue(new InformationViewModel.State(null, null, true));
getHistById(); getHistById();
/*getAllUserHistoryUseCase.execute(username, status -> { /*getAllUserHistoryUseCase.execute(username, status -> {
mutableStateHistoryLiveData.postValue(fromStatus(status)); mutableStateHistoryLiveData.postValue(fromStatus(status));

View File

@ -47,6 +47,7 @@ public class ProfileViewModel extends ViewModel {
//mutableErrorLiveData.postValue("Something wrong. Try later =(" + status.getErrors()); //mutableErrorLiveData.postValue("Something wrong. Try later =(" + status.getErrors());
return; return;
} }
//userCheckCompleted = true; //userCheckCompleted = true;
/*if (status.getStatusCode() == 200) { /*if (status.getStatusCode() == 200) {
if (status.getValue() != null) { if (status.getValue() != null) {

View File

@ -24,5 +24,20 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:menu="@menu/bottom_nav_menu"
app:labelVisibilityMode="labeled"
android:animateLayoutChanges="true"
android:visibility="gone"
app:layout_constraintEnd_toEndOf="parent"/> app:layout_constraintEnd_toEndOf="parent"/>
<com.google.android.material.floatingactionbutton.FloatingActionButton
android:id="@+id/qr_scan"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/baseline_qr_code_scanner_24"
app:layout_constraintBottom_toTopOf="@+id/nav_view"
app:layout_constraintEnd_toEndOf="parent"
android:visibility="gone"
android:layout_margin="24dp"
/>
</androidx.constraintlayout.widget.ConstraintLayout> </androidx.constraintlayout.widget.ConstraintLayout>