Pointage des employés

Bonjour,
je suis en train de faire une application gestion des employées en android et j'ai déjà fait la majorite du projet , il me reste juste le pointage d'un employé donnée
si vous pouvez m'aider ,je travaille avec android et sqlite
Merci d'avance
Tahb

Configuration: Windows / Chrome 70.0.3538.110

3 réponses

  1. Modérateur
    Bonjour,

    Qu'entends-tu par "pointage" ?
    1. Bonjour,
      la présence quotidienne
    2. Modérateur
      Ok, mais comment comptes-tu le faire ? Est-ce que ton app est reliée à un serveur pour centraliser et synchroniser les données ?
    3. non , c'est une simple application ou il y a les opération(ajouter ,modifier, supprimer ,lister)les employés ,
      il me manque juste comment faire le pointage d'un employé .
  2. Bonjour
    voici exemple ma mainActivity
    j'ai deja creer une boutton dans le mainActivity.xml et je veux cette boutton me visulaise les employes xml
    mainActivity
    package com.example.soc_macmini_15.ApplicationEmploye.Activity;
    
    import android.content.Intent;
    import android.support.v4.app.FragmentManager;
    import android.support.v7.app.AppCompatActivity;
    import android.os.Bundle;
    import android.util.Log;
    import android.view.View;
    import android.widget.Button;
    import android.widget.EditText;
    import android.widget.ImageView;
    import android.widget.RadioButton;
    import android.widget.RadioGroup;
    import android.widget.Toast;
    
    import com.example.soc_macmini_15.ApplicationEmploye.DB.EmployeeOperations;
    import com.example.soc_macmini_15.ApplicationEmploye.Fragments.DatePickerFragment;
    import com.example.soc_macmini_15.ApplicationEmploye.Model.Employee;
    import com.example.soc_macmini_15.ApplicationEmploye.R;
    
    import java.text.SimpleDateFormat;
    import java.util.Date;
    
    public class AddUpdateEmployee extends AppCompatActivity implements DatePickerFragment.DateDialogListener {
    
        private static final String EXTRA_EMP_ID = "com.example.soc_macmini_15.sqlitepractice.empId";
        private static final String EXTRA_ADD_UPDATE = "com.example.soc_macmini_15.sqlitepractice.add_update";
        private static final String DIALOG_DATE = "DialogDate";
        private ImageView calendarImage;
        private RadioGroup radioGroup;
        private RadioButton maleRadioButton, femaleRadioButton;
        private EditText firstNameEditText;
        private EditText lastNameEditText;
        private EditText deptEditText;
        private EditText hireDateEditText;
        private Button addUpdateButton;
        private Employee newEmployee;
        private Employee oldEmployee;
        private String mode;
        private long empId;
        private EmployeeOperations employeeData;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_add_update_employee);
    
            newEmployee = new Employee();
            oldEmployee = new Employee();
            firstNameEditText = findViewById(R.id.edit_text_first_name);
            lastNameEditText = findViewById(R.id.edit_text_last_name);
            hireDateEditText = findViewById(R.id.edit_text_hire_date);
            radioGroup = findViewById(R.id.radio_gender);
            femaleRadioButton = findViewById(R.id.radio_female);
            maleRadioButton = findViewById(R.id.radio_male);
            calendarImage = findViewById(R.id.image_view_hire_date);
            deptEditText = findViewById(R.id.edit_text_dept);
            addUpdateButton = findViewById(R.id.button_add_update_employee);
            employeeData = new EmployeeOperations(this);
    
    
            Log.d("test", "onCreate: " + getIntent().getStringExtra(EXTRA_ADD_UPDATE));
            mode = getIntent().getStringExtra(EXTRA_ADD_UPDATE);
            if (mode != null)
                if (mode.equals("Update")) {
                    addUpdateButton.setText("Mettre a jour employe");
                    empId = getIntent().getLongExtra(EXTRA_EMP_ID, 0);
    
                    initializeEmployee(empId);
                }
            radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
                @Override
                public void onCheckedChanged(RadioGroup radioGroup, int i) {
                    if (i == R.id.radio_male) {
                        newEmployee.setGender("M");
                        if (mode.equals("Update")) {
                            oldEmployee.setGender("M");
                        }
                    } else if (i == R.id.radio_female) {
                        newEmployee.setGender("F");
                        if (mode.equals("Update")) {
                            oldEmployee.setGender("F");
                        }
                    }
                }
            });
            calendarImage.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    FragmentManager manager = getSupportFragmentManager();
                    DatePickerFragment dialog = new DatePickerFragment();
                    dialog.show(manager, DIALOG_DATE);
                }
            });
            addUpdateButton.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    employeeData.open();
                    if (mode != null) {
                        if (mode.equals("Add")) {
                            newEmployee.setFirstName(firstNameEditText.getText().toString());
                            newEmployee.setLastName(lastNameEditText.getText().toString());
                            newEmployee.setHireDate(hireDateEditText.getText().toString());
                            newEmployee.setDept(deptEditText.getText().toString());
                            if (maleRadioButton.isChecked())
                                newEmployee.setGender("M");
                            else
                                newEmployee.setGender("F");
    
    
                            employeeData.addEmployee(newEmployee);
                            employeeData.close();
                            Toast.makeText(AddUpdateEmployee.this, "Employee " + newEmployee.getFirstName() +
                                    " est ajoute avec succes!", Toast.LENGTH_SHORT).show();
                            Intent i = new Intent(AddUpdateEmployee.this, MainActivity.class);
                            startActivity(i);
                        } else {
                            oldEmployee.setFirstName(firstNameEditText.getText().toString());
                            oldEmployee.setLastName(lastNameEditText.getText().toString());
                            oldEmployee.setHireDate(hireDateEditText.getText().toString());
                            oldEmployee.setDept(deptEditText.getText().toString());
                            employeeData.updateEmployee(oldEmployee);
                            employeeData.close();
                            Toast.makeText(AddUpdateEmployee.this, "Employee " + oldEmployee.getFirstName() +
                                    " est ajoute avec succes!", Toast.LENGTH_SHORT).show();
                            Intent i = new Intent(AddUpdateEmployee.this, MainActivity.class);
                            startActivity(i);
                        }
                    }
                }
            });
        }
    
        private void initializeEmployee(long empId) {
            oldEmployee = employeeData.getEmployee(empId);
            if (oldEmployee != null) {
                firstNameEditText.setText(oldEmployee.getFirstName());
                lastNameEditText.setText(oldEmployee.getLastName());
                hireDateEditText.setText(oldEmployee.getHireDate());
                radioGroup.check(oldEmployee.getGender().equals("M") ? R.id.radio_male : R.id.radio_female);
                deptEditText.setText(oldEmployee.getDept());
            } else {
                Toast.makeText(this, "Employee non present", Toast.LENGTH_SHORT).show();
            }
        }
    
    
        public String formatDate(Date date) {
            SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
            String hireDate = sdf.format(date);
            return hireDate;
        }
    
        @Override
        public void onFinishDialog(Date date) {
            hireDateEditText.setText(formatDate(date));
        }
    }
    1. Modérateur
      Je n'ai toujours pas compris ce que tu entends par "pointage". Est-ce que :
      - c'est l'employé qui utilise sa propre app pour "badger" (flasher un QR code par exemple) ?
      - c'est le chef d'équipe qui a un listing de ses employés et qui coche la présence ou non ?

      Dans le 1er cas, avoir une liste d'employé dans l'app n'est pas pertinent. D'autant plus que tu n'as pas de serveur donc ton "pointage" ne va pas servir à grand chose.
      Dans le 2nd cas, je comprends mieux le "pointage". Par contre, j'ai l'impression qu'il manque une notion de temps/jours, non ?

      Dernière question : c'est un projet réel ? Un stage ? Un projet d'études ?
      1. Bonjour
        C'est le chef d'équipe qui a un listing de ses employés et qui coche la présence ,
        oui vous avez raison , il me manque le temps jour parce que c'est quotidiennement
        c'est un petit projet
      2. Modérateur
        Donc il te suffit "juste" d'afficher la liste des employés avec une case à cocher par jour, non ?
      3. comment, je vais vous montrez la fonction qui me permet d'afficher les employees et la classe d'affichage des employees
        fonction
         public List<Employee> getAllEmployees() {
        open();
        Cursor cursor = database.query(EmployeeDBHandler.TABLE_EMPLOYEES, allColumns,
        null, null, null, null, null);
        List<Employee> employees = new ArrayList<>();
        if (cursor.getCount() > 0) {
        while (cursor.moveToNext()) {
        Employee employee = new Employee();
        employee.setEmpId(cursor.getLong(cursor.getColumnIndex(EmployeeDBHandler.COLUMN_ID)));
        employee.setFirstName(cursor.getString(cursor.getColumnIndex(EmployeeDBHandler.COLUMN_FIRST_NAME)));
        employee.setLastName(cursor.getString(cursor.getColumnIndex(EmployeeDBHandler.COLUMN_LAST_NAME)));
        employee.setGender(cursor.getString(cursor.getColumnIndex(EmployeeDBHandler.COLUMN_GENDER)));
        employee.setHireDate(cursor.getString(cursor.getColumnIndex(EmployeeDBHandler.COLUMN_HIRE_DATE)));
        employee.setDept(cursor.getString(cursor.getColumnIndex(EmployeeDBHandler.COLUMN_DEPT)));
        employees.add(employee);
        }
        }
        close();
        return employees;
        }

        la classe viewAllEmploye
        package com.example.soc_macmini_15.ApplicationEmploye.Activity;

        import android.app.ListActivity;
        import android.support.v7.app.AppCompatActivity;
        import android.os.Bundle;
        import android.widget.ArrayAdapter;
        import android.widget.Toast;

        import com.example.soc_macmini_15.ApplicationEmploye.DB.EmployeeOperations;
        import com.example.soc_macmini_15.ApplicationEmploye.Model.Employee;
        import com.example.soc_macmini_15.ApplicationEmploye.R;

        import java.util.List;

        public class ViewAllEmployees extends ListActivity {

        private EmployeeOperations employeeOperations;
        List<Employee> employees;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_view_all_employees);

        employeeOperations=new EmployeeOperations(this);
        employeeOperations.open();
        employees=employeeOperations.getAllEmployees();
        employeeOperations.close();
        if(!employees.isEmpty()) {
        ArrayAdapter<Employee> adapter = new ArrayAdapter<>(this,
        android.R.layout.simple_list_item_1, employees);
        setListAdapter(adapter);
        }
        else
        Toast.makeText(this, "No Data Present", Toast.LENGTH_SHORT).show();
        }
        }
      4. Modérateur
        Ici :
        ArrayAdapter<Employee> adapter = new ArrayAdapter<>(this,
        android.R.layout.simple_list_item_1, employees);

        Pour le 1er paramètre, au lieu d'utiliser un layout fourni par Android, tu dois créé ton propre layout avec, par exemple, une
        CheckBox
        et un
        TextView
        .
      5. Ok merci frère