Разрешить пользователю отмечать посещаемость один раз в день - PullRequest
0 голосов
/ 12 марта 2019

Я работаю в Системе управления посещаемостью. Я хочу, чтобы пользователь отмечал посещаемость один раз в день.

Как я могу поставитьограничение, позволяющее пользователям отмечать один раз в день. Либо я ограничиваю кнопку после нажатия, либо могу что-то сделать в логике базы данных.

           DBreference.addChildEventListener(new ChildEventListener() {
               @Override
               public void onChildAdded(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {
                   currentDateTimeString = DateFormat.getDateTimeInstance().format(new Date());

                   String present ="Present";
                   DBreference.child("Attendance").child(currentDateTimeString).setValue(present);
                   Toast.makeText(ProfileAct.this, "Marked as Present", Toast.LENGTH_SHORT).show();
               }

               @Override
               public void onChildChanged(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {

               }

               @Override
               public void onChildRemoved(@NonNull DataSnapshot dataSnapshot) {

               }

               @Override
               public void onChildMoved(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {

               }

               @Override
               public void onCancelled(@NonNull DatabaseError databaseError) {

               }
           });
            break;
        case R.id.cardLeave:
            DBreference.addChildEventListener(new ChildEventListener() {
                @Override
                public void onChildAdded(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {
                    currentDateTimeString = DateFormat.getDateTimeInstance().format(new Date());
                    String present ="On Leave";
                    DBreference.child("Attendance").child(currentDateTimeString).setValue(present);
                    Toast.makeText(ProfileAct.this, "Marked As Leave", Toast.LENGTH_SHORT).show();
                }

                @Override
                public void onChildChanged(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {

                }

                @Override
                public void onChildRemoved(@NonNull DataSnapshot dataSnapshot) {

                }

                @Override
                public void onChildMoved(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {

                }

                @Override
                public void onCancelled(@NonNull DatabaseError databaseError) {

                }
            });`

Ответы [ 3 ]

0 голосов
/ 12 марта 2019

Добавьте слушателя на свой путь только на день, а не на время:

Date cDate = new Date();
String fDate = new SimpleDateFormat("yyyy-MM-dd").format(cDate);

e.g. DBreference.child("Attendance").(fDate)

И добавьте значение «Present» или «Absent» в этот путь.

Затем присоедините ValueEventListener к этому пути. И вы получаете обратный вызов значения, присутствующего в этом пути в onDataChange, вы можете отключить кнопку или просмотр, если найденное значение найдено.

Документация ValueEventListener

0 голосов
/ 12 марта 2019

Лучше всего на самом деле иметь узел для посещаемости.Firebase поддерживает плоские данные, чем вложенные.Затем вы можете создать ребенка на каждый день, с пользователем, чтобы проверить на день.Таким образом, даже ваши данные проще.Вот пример

attendance : {
    "12/03/2019" : {
        "UID" : "time stamp"
    },
    "11/03/2019" : {
        "UID" : "time stamp"
    }
}
0 голосов
/ 12 марта 2019

Ваша база данных должна создавать ежедневные записи в соответствии с датой, и затем вы будете проверять со стороны внешнего интерфейса, что пользователь посещал или нет, если да, тогда вам нужно сохранить логический флаг в базе данных, и вам нужно будет проверить, прежде чем дать пользователюпосещаемость, которую он / она уже предоставил или не использует этот флаг.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...