Subversion Repositories SmartDukaan

Rev

Rev 14792 | Rev 16278 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed

package com.saholic.profittill.main;

import android.app.Activity;
import android.app.AlertDialog;
import android.app.ProgressDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.SharedPreferences;
import android.graphics.Bitmap;
import android.graphics.Paint;
import android.net.Uri;
import android.os.AsyncTask;
import android.os.Bundle;
import android.app.Fragment;
import android.text.TextUtils;
import android.util.Base64;
import android.util.Log;
import android.view.KeyEvent;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.webkit.JavascriptInterface;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.Spinner;
import android.widget.TextView;
import android.widget.Toast;

import com.saholic.profittill.Constants.ProfitTillConstants;
import com.saholic.profittill.R;
import com.testin.agent.TestinAgent;

import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.StringTokenizer;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class ContactUsFragment extends Fragment {
    ArrayList<NameValuePair> contactusNameValuePair;
    SharedPreferences userData;
    SharedPreferences apiData;
    SharedPreferences.Editor userDataEditor;
    SharedPreferences.Editor apiSettingsEditor;
    EditText emailId,content;
    Button submit;
    TextView contactUsNumber,tapToCall;
    String subject="";
    EditText otherContent;
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {

        View rootView = inflater.inflate(R.layout.fragment_contact_us, container, false);
        TestinAgent.init(getActivity());
        userData = getActivity().getSharedPreferences("User_Data", Context.MODE_PRIVATE);
        apiData = getActivity().getSharedPreferences("API_Data", Context.MODE_PRIVATE);
        userDataEditor = userData.edit();
        apiSettingsEditor = apiData.edit();
        TestinAgent.setUserInfo(userData.getString("id",""));
        otherContent=(EditText) rootView.findViewById(R.id.otherSubjectContent);
        emailId =(EditText) rootView.findViewById(R.id.contactUsEmailId);
        emailId.setText(userData.getString("email","Email"));
        emailId.setKeyListener(null);
        final ArrayList<String> issueList = new ArrayList<String>();
        String issues =apiData.getString("contactus.issues","");
        StringTokenizer st2 = new StringTokenizer(issues, "|");
        issueList.add("---Select Issue---");
        while (st2.hasMoreElements()) {
            issueList.add(st2.nextToken());
        }
        ArrayAdapter<String> adapter = new ArrayAdapter<String>(getActivity(),
                android.R.layout.simple_spinner_item, issueList);

        final Spinner spinYear = (Spinner)rootView.findViewById(R.id.contactUsSubject);
        adapter.setDropDownViewResource(android.R.layout.simple_dropdown_item_1line);
        spinYear.setAdapter(adapter);
        content =(EditText) rootView.findViewById(R.id.contactUsContent);
        submit = (Button) rootView.findViewById(R.id.contactUsButton);
        contactUsNumber = (TextView) rootView.findViewById(R.id.contactUsNumber);
        contactUsNumber.setText("Call Us at " +apiData.getString("contactus.number","") + "   >");
        contactUsNumber.setPaintFlags(Paint.UNDERLINE_TEXT_FLAG);

        spinYear.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
            @Override
            public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
                    subject=spinYear.getSelectedItem().toString();

                    if(position==(issueList.size()-1)){
                        otherContent.setVisibility(View.VISIBLE);

                    }
                    else{
                        otherContent.setVisibility(View.GONE);
                    }

            }

            @Override
            public void onNothingSelected(AdapterView<?> parent) {

            }
        });
        contactUsNumber.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Calendar cal = Calendar.getInstance();
                cal.getTime();
                SimpleDateFormat sdf = new SimpleDateFormat("HH");
                int currentHour = Integer.parseInt(sdf.format(cal.getTime()));
                int timeFrom = Integer.parseInt(apiData.getString("contactus.time.from", "").split(" ")[0]);
                int timeTo = Integer.parseInt(apiData.getString("contactus.time.to", "").split(" ")[0]);
                if (currentHour > timeTo || currentHour < timeFrom) {
                    Toast.makeText(getActivity(),"Sorry not the correct time to contact us. Please contact us between "+apiData.getString("contactus.time.from", "") + " to "+ apiData.getString("contactus.time.to", "") ,Toast.LENGTH_SHORT).show();
                } else {
                    new AlertDialog.Builder(getActivity())
                            .setTitle("Call us")
                            .setMessage("Our customer care people are available from " + apiData.getString("contactus.time.from","") + " to " + apiData.getString("contactus.time.to",""))
                            .setPositiveButton("Call", new DialogInterface.OnClickListener() {
                                @Override
                                public void onClick(DialogInterface dialog, int which) {
                                    Intent callIntent = new Intent(Intent.ACTION_CALL);
                                    callIntent.setData(Uri.parse("tel:0" + apiData.getString("contactus.number", "")));
                                    startActivity(callIntent);
                                }

                            })
                            .setNegativeButton("Cancel", null)
                            .show();
                }
            }
        });
        submit.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if(subject.contains("Other")) {
                    subject = otherContent.getText().toString();
                }
                if(TextUtils.isEmpty(emailId.getText().toString())){
                    Toast.makeText(getActivity(),"Please enter a email id.",Toast.LENGTH_SHORT).show();
                }
                else if(TextUtils.isEmpty(subject) || subject.contains("Select")){
                    Toast.makeText(getActivity(),"Please enter a subject.",Toast.LENGTH_SHORT).show();
                }
                else if(TextUtils.isEmpty(content.getText().toString())){
                    Toast.makeText(getActivity(),"Please enter the message details.",Toast.LENGTH_SHORT).show();
                }
                else{
                    Pattern pattern;
                    Matcher matcher;
                    pattern = Pattern.compile(ProfitTillConstants.EMAIL_PATTERN);
                    matcher = pattern.matcher(emailId.getText().toString());
                    if( matcher.matches()){
                        showProgressDialog();
                        contactusNameValuePair = new ArrayList<NameValuePair>();
                        contactusNameValuePair.add(new BasicNameValuePair("user_id",userData.getString("id","")));
                        contactusNameValuePair.add(new BasicNameValuePair("email",emailId.getText().toString()));
                        contactusNameValuePair.add(new BasicNameValuePair("subject",subject));
                        contactusNameValuePair.add(new BasicNameValuePair("message",content.getText().toString()));
                        new loadData().execute();
                    }
                    else{
                        Toast.makeText(getActivity(),"Please enter a valid email id",Toast.LENGTH_SHORT).show();
                    }
                }
            }
        });
        /*getView().setOnKeyListener(new View.OnKeyListener() {
            @Override
            public boolean onKey(View v, int keyCode, KeyEvent event) {
                if (event.getAction() == KeyEvent.ACTION_DOWN) {
                    switch (keyCode) {
                        case KeyEvent.KEYCODE_BACK:
                            break;
                    }
                }

                return false;
            }
        });*/
        return rootView;
    }

    @Override
    public void onResume() {
        super.onResume();
        getView().setFocusableInTouchMode(true);
        getView().requestFocus();
        getView().setOnKeyListener(new View.OnKeyListener() {
            @Override
            public boolean onKey(View v, int keyCode, KeyEvent event) {

                if (event.getAction() == KeyEvent.ACTION_UP && keyCode == KeyEvent.KEYCODE_BACK){
                    Intent i = new Intent(getActivity(), MainActivity.class);
                    i.putExtra("displayView", "0");
                    startActivity(i);
                    return true;
                }
                return false;
            }
        });
    }

    @Override
    public void onViewCreated(View view, Bundle savedInstanceState) {

        super.onViewCreated(view, savedInstanceState);
    }
    ProgressDialog pDlg;
    class loadData extends AsyncTask<String, Integer, String> {
        private StringBuilder sb;

        private HttpResponse req;
        private InputStream is;

        @Override
        protected void onPreExecute() {
            super.onPreExecute();
            Log.e("Pre execute", "Pre execute");
        }

        @Override
        protected String doInBackground(String... arg0) {
            try {
                HttpClient httpclient = new DefaultHttpClient();
                HttpPost httppost = new HttpPost(apiData.getString("feedback.push.api",null));
                httppost.setHeader("Authorization", ProfitTillConstants.BASIC_AUTH);
                httppost.setEntity(new UrlEncodedFormEntity(contactusNameValuePair));
                HttpResponse response = httpclient.execute(httppost);
                HttpEntity entity = response.getEntity();
                is = entity.getContent();
                InputStreamReader ireader = new InputStreamReader(is);
                BufferedReader bf = new BufferedReader(ireader);
                sb = new StringBuilder();
                String line = null;
                while ((line = bf.readLine()) != null) {
                    sb.append(line);
                }
            } catch (Exception e) {
            }
            return "success";
        }

        @Override
        protected void onPostExecute(String result) {
            super.onPostExecute(result);
            if(pDlg!=null){
                pDlg.dismiss();
            }
            Intent i = new Intent(getActivity(),MainActivity.class);
            i.putExtra("displayView","0");
            startActivity(i);

        }
    }
    private void showProgressDialog()
    {
        pDlg = new ProgressDialog(getActivity());
        pDlg.setMessage("Submitting your feedback");
        pDlg.setProgressStyle(ProgressDialog.STYLE_SPINNER);
        pDlg.setCancelable(false);
        pDlg.show();

    }
}