تطبيق Restaurant ب أندرويد التطبيق الخاص بل client الجزء الثاني

فهاد الجزء الثاني من تطبيق Restaurant ب أندرويد التطبيق الخاص بل client غادي نكملو الملفات لي بقاو ولي غادي يمكنوا ل client من بعد مايشوف ل plat لي بغا يديرلو commande هاد الكوموند لي كتسجل فالتطبيق الخاص بالمطعم.

نظرة سريعة بالفيديو


1- MenuDetailsActivity.java


غادي تمشي للمجلد java  فيه غادي تلقى الملف MenuDetailsActivity.java فيه غادي يكون الكود لي كيمكن من مشاهدة التفاصيل ديال ل plat لي اختار المستخدم من بعد مكنسترجع TextViews ول Bouton منبعد كندير référence ل la table لي هي Menu منبعد كنسترجع ل id ديال ل plat لي ضغط عليه المستخدم وبه كنبحث ف table على ل plat ومنبعد كنسترجع المعلومات الخاصين به كاملين وكنعرضهم ف TextViews بالإضافة للصورة وفل onclick ديال ل لBouton لي كتمكن ل client باش ي commander plat عندي الكود لي كيمكنو من التوجه للActivity الخاصة بإضافة commande مع ل id ديال ل plat ولي غادي نزيدوها من بعد الكود ديال الملف هو :

                                    
                                        package com.example.belasri.restoclientapp;

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;

import com.google.firebase.database.DataSnapshot;
import com.google.firebase.database.DatabaseError;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.database.ValueEventListener;
import com.squareup.picasso.Picasso;

public class MenuDetailsActivity extends AppCompatActivity {
    private TextView menuTitle,menuDesc,menuPrice;
    private ImageView MenuImageView;
    private FirebaseDatabase database;
    private DatabaseReference reference;
    private String menu_id = null;
    private Button mCmdBtn;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_menu_details);
        menuTitle = (TextView) findViewById(R.id.menuTitle);
        menuDesc = (TextView) findViewById(R.id.menuDesc);
        menuPrice = (TextView) findViewById(R.id.price);
        MenuImageView = (ImageView) findViewById(R.id.menuDetailsImage);
        mCmdBtn = (Button) findViewById(R.id.cmdBtn);
        menu_id = getIntent().getStringExtra("menu_id");
        reference = FirebaseDatabase.getInstance().getReference().child("Menu");
        getData();
    }
    private void getData(){
        reference.child(menu_id).addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(final DataSnapshot dataSnapshot) {
                final String title = (String) dataSnapshot.child("title").getValue();
                final String description = (String) dataSnapshot.child("description").getValue();
                final String price = (String) dataSnapshot.child("price").getValue();
                final String  image = (String) dataSnapshot.child("imageUrl").getValue();
                menuTitle.setText(title);
                menuDesc.setText(description);
                menuPrice.setText(price + " dh");
                Picasso.with(MenuDetailsActivity.this).load(image).into(MenuImageView);
                mCmdBtn.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        Intent command = new Intent(MenuDetailsActivity.this,CommandActivity.class);
                        command.putExtra("menu_id",menu_id);
                        startActivity(command);
                    }
                });
            }

            @Override
            public void onCancelled(DatabaseError databaseError) {

            }
        });
    }
}
                                    
                                

2- activity_command.xml


غادي تمشي للمجلد java  فيه غادي تزيد Activity جديدة سميها CommandActivity منبعد مكتزاد سير ل res/layout فيها غادي تلقى الملف activity_command.xml فهاد ل Activity هي لي غادي تمكن ل client من إضافة commande فهاد الملف غادي يكون عندنا  des EditTexts لي كيمكنو من إدخال عنوان وتفاصيل على ل client وعندي ايضا bouton لي كتنفد ل fonction saveToDb ولي غادي تكون فالملف CommandActivity.java  الكود ديال الملف هو:

                                    
                                        <?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.example.belasri.restoclientapp.CommandActivity">
    <LinearLayout
        android:orientation="vertical"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">
        <TextView
            android:id="@+id/addTextView"
            android:text="Commander"
            android:textAlignment="center"
            android:textColor="#e74c3c"
            android:textSize="30sp"
            android:padding="10dp"
            android:layout_width="match_parent"
            android:layout_height="wrap_content" />
        <View
            android:background="#e74c3c"
            android:layout_width="match_parent"
            android:layout_height="1dp"></View>
        <LinearLayout
            android:layout_marginTop="60dp"
            android:orientation="vertical"
            android:layout_width="match_parent"
            android:layout_height="wrap_content">
            <LinearLayout
                android:orientation="vertical"
                android:layout_marginTop="20dp"
                android:layout_width="match_parent"
                android:layout_height="wrap_content">
                <EditText
                    android:id="@+id/fullname"
                    android:hint="Nom &amp; Prénom"
                    android:textAlignment="textStart"
                    android:layout_marginTop="10dp"
                    android:layout_gravity="start"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content" />
                <EditText
                    android:id="@+id/adress"
                    android:hint="Adresse"
                    android:layout_marginTop="10dp"
                    android:textAlignment="textStart"
                    android:layout_gravity="start"
                    android:inputType="textMultiLine"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content" />
                <EditText
                    android:id="@+id/phone"
                    android:hint="Téléphone"
                    android:layout_marginTop="10dp"
                    android:textAlignment="textStart"
                    android:layout_gravity="start"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content" />
                <EditText
                    android:id="@+id/qte"
                    android:hint="Quantité"
                    android:layout_marginTop="10dp"
                    android:inputType="number"
                    android:textAlignment="textStart"
                    android:layout_gravity="start"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content" />
            </LinearLayout>
            <Button
                android:id="@+id/addbtn"
                android:layout_marginTop="100dp"
                android:layout_marginBottom="20dp"
                android:textSize="20dp"
                android:text="Valider"
                android:layout_gravity="bottom"
                android:background="#e74c3c"
                android:onClick="saveToDb"
                android:textColor="#fff"
                android:padding="10dp"
                android:layout_width="match_parent"
                android:layout_height="wrap_content" />
        </LinearLayout>
    </LinearLayout>
</ScrollView>
                                    
                                

3- CommandActivity.java


غادي تمشي للمجلد java  فيه غادي تلقى الملف CommandActivity.java فيه غادي يكون الكود لي كيمكن من إضافة ل commande لقاعدة البيانات فهنا كنسترجع les Edit Texts ول menu_id لي جاني من  MenuDetailsActivity.java  منبعد كنزيد la base ف firebase وكنسميها Commands منبعد عندي ل fonction saveToDb لي كتزيد المعلومات الخاصة بل commande ف la table Commands وكتعرض رسالة نجاح وكتوجه المستخدم للصفحة الرئيسية الكود ديال الملف هو :


                                      
                                        package com.example.belasri.restoclientapp;

import android.content.Intent;
import android.net.Uri;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.RecyclerView;
import android.text.TextUtils;
import android.view.View;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;

import com.google.android.gms.tasks.OnSuccessListener;
import com.google.firebase.database.DataSnapshot;
import com.google.firebase.database.DatabaseError;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.database.ValueEventListener;
import com.google.firebase.storage.FirebaseStorage;
import com.google.firebase.storage.StorageReference;
import com.google.firebase.storage.UploadTask;

public class CommandActivity extends AppCompatActivity {
    private EditText fullname,phone,adress,qte;
    private FirebaseDatabase database;
    private DatabaseReference databaseReference;
    String menu_id;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_command);
        fullname = (EditText) findViewById(R.id.fullname);
        phone = (EditText) findViewById(R.id.phone);
        adress = (EditText) findViewById(R.id.adress);
        qte = (EditText) findViewById(R.id.qte);
        menu_id = getIntent().getStringExtra("menu_id");
        databaseReference = database.getInstance().getReference().child("Commands");
    }

    public void saveToDb(View view) {
        final String mFullname = fullname.getText().toString().trim();
        final String mPhone = phone.getText().toString().trim();
        final String mAdress = adress.getText().toString().trim();
        final String mQte = qte.getText().toString().trim();
        if(!TextUtils.isEmpty(mFullname) && !TextUtils.isEmpty(mPhone) && !TextUtils.isEmpty(mQte)) {
            DatabaseReference newCommand = databaseReference.child(menu_id);
            newCommand.child("name").setValue(mFullname);
            newCommand.child("adress").setValue(mAdress);
            newCommand.child("phone").setValue(mPhone);
            newCommand.child("qte").setValue(mQte);
            Toast.makeText(CommandActivity.this, "Ajoutée avec succés", Toast.LENGTH_SHORT).show();
            Intent home = new Intent(CommandActivity.this, MainActivity.class);
            home.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
            startActivity(home);
        }else{
            Toast.makeText(this, "Veuillez remplir tous les champs", Toast.LENGTH_SHORT).show();
        }
    }
}
                                      
                                    

4- الملف build.gradle


فالملف build.gradle  ديال ل app كنزيد ل dependencies لي غادي نحتاج فالكود ديالو بعد التعديل هو :

                                        
                                            apply plugin: 'com.android.application'

android {
    compileSdkVersion 27
    defaultConfig {
        applicationId "com.example.belasri.restoclientapp"
        minSdkVersion 15
        targetSdkVersion 27
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:appcompat-v7:27.0.2'
    implementation 'com.android.support.constraint:constraint-layout:1.0.2'
    implementation 'com.google.firebase:firebase-database:11.0.4'
    implementation 'com.google.firebase:firebase-storage:11.0.4'
    implementation 'com.google.firebase:firebase-auth:11.0.4'
    compile 'com.android.support:recyclerview-v7:27.0.2'
    compile 'com.android.support:cardview-v7:27.0.2'
    compile 'com.squareup.picasso:picasso:2.5.2'
    compile 'com.firebaseui:firebase-ui-database:1.2.0'
    compile 'com.google.gms:google-services:3.1.0'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'com.android.support.test:runner:1.0.1'
    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1'
}

apply plugin: 'com.google.gms.google-services'
                                        
                                    

كلمات مفاتيح :