Proyectos de Subversion Android Microlearning - Nuevo Interface

Rev

Rev 73 | | Comparar con el anterior | Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
1 gabriel 1
package com.cesams.twogetskills.fragment;
2
 
3
import android.app.Activity;
4
import android.content.Context;
5
import android.content.Intent;
6
import android.location.GnssAntennaInfo;
7
import android.net.Uri;
8
import android.os.Bundle;
9
 
10
import androidx.annotation.NonNull;
11
import androidx.annotation.Nullable;
12
import androidx.fragment.app.Fragment;
13
import androidx.lifecycle.LifecycleOwner;
14
 
15
import android.text.TextUtils;
16
import android.util.Log;
17
import android.view.KeyEvent;
18
import android.view.LayoutInflater;
19
import android.view.Menu;
20
import android.view.MenuInflater;
21
import android.view.View;
22
import android.view.ViewGroup;
23
import android.view.inputmethod.EditorInfo;
24
import android.view.inputmethod.InputMethodManager;
25
import android.widget.Button;
26
import android.widget.EditText;
27
import android.widget.ProgressBar;
28
import android.widget.TextView;
54 gabriel 29
import android.widget.Toast;
1 gabriel 30
 
31
import com.cesams.twogetskills.Configuration;
32
import com.cesams.twogetskills.Constants;
33
import com.cesams.twogetskills.R;
34
import com.cesams.twogetskills.activity.MainActivity;
25 gabriel 35
import com.cesams.twogetskills.dao.NotificationCenterDao;
1 gabriel 36
import com.cesams.twogetskills.dao.SyncDao;
37
import com.cesams.twogetskills.library.AesCipher;
38
import com.cesams.twogetskills.library.Functions;
39
import com.cesams.twogetskills.library.Http;
40
import com.cesams.twogetskills.entity.Sync;
41
import com.cesams.twogetskills.entity.UserLog;
42
import com.cesams.twogetskills.preference.Preference;
43
import com.cesams.twogetskills.room.ResultCount;
44
import com.cesams.twogetskills.skeleton.ITwoGetSkills;
45
 
46
import org.json.JSONException;
47
import org.json.JSONObject;
48
 
49
import java.io.IOException;
50
import java.text.SimpleDateFormat;
51
import java.util.Calendar;
52
import java.util.Date;
74 efrain 53
import java.util.Objects;
54
import java.util.concurrent.Executor;
1 gabriel 55
 
56
import okhttp3.Call;
57
import okhttp3.Callback;
58
import okhttp3.FormBody;
59
import okhttp3.OkHttpClient;
60
import okhttp3.Request;
61
import okhttp3.RequestBody;
62
import okhttp3.Response;
63
 
64
 
73 efrain 65
public class SigninFragment extends Fragment implements LifecycleOwner {
1 gabriel 66
    //implements ITaskCallback {
67
    private final static String TAG = "C2GS - SigninFragment";
68
    private ITwoGetSkills iTwoGetSkills;
69
    private EditText mEditTextEmail;
70
    private EditText mEditTextPassword;
71
    private boolean inProgress = false;
72
    private Button mButtonSignIn;
73
    private Button mButtonSignUp;
74
    private ProgressBar mProgressBar;
25 gabriel 75
    String dateOn;
1 gabriel 76
 
77
    @Override
78
    public void onCreate(@Nullable Bundle savedInstanceState) {
79
        super.onCreate(savedInstanceState);
80
        setHasOptionsMenu(true);
8 gabriel 81
 
82
 
1 gabriel 83
    }
84
 
85
    @Override
86
    public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
87
        super.onCreateOptionsMenu(menu, inflater);
88
        menu.clear();
89
    }
90
 
91
 
92
    @Override
93
    public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
94
        super.onViewCreated(view, savedInstanceState);
95
        iTwoGetSkills = (ITwoGetSkills) getActivity();
19 gabriel 96
        mProgressBar = (ProgressBar) getView().findViewById(R.id.signin_progress_bar);
97
        mEditTextEmail = (EditText) getView().findViewById(R.id.signin_edittext_email);
1 gabriel 98
        //mEditTextEmail.setText("efrain.yanez@leaderslinked.com");
99
 
100
 
101
        mEditTextEmail.setOnEditorActionListener(new TextView.OnEditorActionListener() {
102
            @Override
103
            public boolean onEditorAction(TextView textView, int id, KeyEvent keyEvent) {
104
                mEditTextPassword.requestFocus();
105
                return true;
106
            }
107
        });
108
 
109
        mEditTextPassword = (EditText) getView().findViewById(R.id.signin_edittext_password);
73 efrain 110
        //mEditTextPassword.setText("Cesa2020$");
1 gabriel 111
        //mEditTextPassword.setText("Aalmiron2021");
112
        //mEditTextPassword.setText("Mmarrugo2021");
113
        //mEditTextPassword.setText("Cesa2020*");
114
        mEditTextPassword.setOnEditorActionListener(new TextView.OnEditorActionListener() {
115
            @Override
116
            public boolean onEditorAction(TextView textView, int id, KeyEvent keyEvent) {
117
                if (id == EditorInfo.IME_ACTION_DONE || id == EditorInfo.IME_NULL) {
118
                    attemptLogin();
119
                    return true;
120
                }
121
                return false;
122
            }
123
        });
124
 
125
        mButtonSignIn = (Button) getView().findViewById(R.id.signin_button_sign_in);
126
        mButtonSignIn.setOnClickListener(new View.OnClickListener() {
127
            @Override
128
            public void onClick(View view) {
129
 
130
                //Ocultar el teclado al intentar inicia sesion
56 gabriel 131
                iTwoGetSkills.hideKeyboard(view);
1 gabriel 132
 
133
                attemptLogin();
134
            }
135
        });
136
 
137
 
138
        //
139
 
58 gabriel 140
        mButtonSignUp = getView().findViewById(R.id.signin_button_sign_up);
1 gabriel 141
        mButtonSignUp.setOnClickListener(new View.OnClickListener() {
142
            @Override
143
            public void onClick(View view) {
144
                Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("https://leaderslinked.com/signup"));
54 gabriel 145
                try{
146
                    startActivity(browserIntent);
147
                }catch (Exception e)
148
                {
149
                    Toast.makeText(getContext(), "Necesitas un navegador para ver esta web", Toast.LENGTH_SHORT).show();
150
                }
1 gabriel 151
            }
152
        });
153
 
154
        mEditTextEmail.setOnFocusChangeListener(new View.OnFocusChangeListener() {
155
            @Override
156
            public void onFocusChange(View v, boolean hasFocus) {
157
                if(!hasFocus) {
56 gabriel 158
                    iTwoGetSkills.hideKeyboard(v);
1 gabriel 159
                }
160
            }
161
        });
162
 
163
 
164
    }
165
 
166
 
167
    private void attemptLogin() {
168
 
169
 
170
 
171
        if (inProgress) {
172
            return;
173
        }
174
 
73 efrain 175
        String deviceAes = iTwoGetSkills.getPreference().getAes();
176
        String devicePassword = iTwoGetSkills.getPreference().getPassword();
177
        if (deviceAes.isEmpty() || devicePassword.isEmpty()) {
178
 
179
            iTwoGetSkills.showMessageSnackBar("Dispositivo no registrado, intente nuevamente");
74 efrain 180
            SyncDao syncDao = iTwoGetSkills.getDatabase().getSyncDao();
181
            Sync sync = syncDao.selectOneByType(Constants.SYNC_ADAPTER_TYPE_DEVICE);
73 efrain 182
 
74 efrain 183
            if(sync == null) {
184
                if (!iTwoGetSkills.getPreference().getDeviceUuid().isEmpty()) {
185
                    sync = new Sync(Constants.SYNC_ADAPTER_TYPE_DEVICE, iTwoGetSkills.getPreference().getDeviceUuid());
186
                    syncDao.insert(sync);
187
                    iTwoGetSkills.registerDevice(sync);
188
                }
189
            } else {
190
                iTwoGetSkills.registerDevice(sync);
191
            }
73 efrain 192
            return;
193
        }
194
 
195
 
3 gabriel 196
        /*
1 gabriel 197
        if(TextUtils.isEmpty(iTwoGetSkills.getPreference().getAes())) {
198
            iTwoGetSkills.reloadPreference();
199
        }
3 gabriel 200
        */
1 gabriel 201
 
202
 
203
        mEditTextEmail.setError(null);
204
        mEditTextPassword.setError(null);
205
 
206
        String email = Functions.trimNull(mEditTextEmail.getText().toString());
207
        String password = Functions.trimNull(mEditTextPassword.getText().toString());
208
 
209
        if (TextUtils.isEmpty(email)) {
210
            mEditTextEmail.setError(getString(R.string.error_field_required));
211
            mEditTextEmail.requestFocus();
212
            return;
213
        }
214
 
3 gabriel 215
        if (!Functions.emailcheckengine(email)) {
216
            mEditTextEmail.setError("Formato de email invalido");
217
            mEditTextEmail.requestFocus();
218
            return;
219
        }
220
 
1 gabriel 221
        if (TextUtils.isEmpty(password)) {
222
            mEditTextPassword.setError(getString(R.string.error_field_required));
223
            mEditTextPassword.requestFocus();
224
            return;
225
        }
226
 
227
 
228
        if (!Functions.passwordStrengthCheck(password)) {
229
            mEditTextPassword.setError(getString(R.string.error_invalid_password_format));
230
            mEditTextPassword.requestFocus();
231
            return;
232
        }
233
 
234
        if(iTwoGetSkills.isConnectedInternet()) {
235
            inProgress = true;
236
 
237
 
238
 
239
            mEditTextEmail.setEnabled(false);
240
            mEditTextPassword.setEnabled(false);
19 gabriel 241
            mButtonSignUp.setEnabled(false);
1 gabriel 242
            mButtonSignIn.setEnabled(false);
19 gabriel 243
            iTwoGetSkills.showProgressBar();
1 gabriel 244
 
245
            try {
246
 
73 efrain 247
                Log.d("AES", deviceAes);
1 gabriel 248
 
249
                Http http = new Http(getActivity().getCacheDir());
250
                OkHttpClient client = http.getHttpClient(false);
251
 
252
                Log.d(TAG, "URL = " + Configuration.URL_SIGNIN);
253
 
254
                RequestBody formBody = null;
73 efrain 255
              /*  if(aes.isEmpty()) {
1 gabriel 256
                    formBody = new FormBody.Builder()
257
                            .add(Constants.POST_SIGNIN_FIELD_APPLICATION_ID, String.valueOf(Configuration.APPLICATION_ID))
258
                            .add(Constants.POST_SIGNIN_FIELD_DEVICE_UUID, iTwoGetSkills.getPreference().getDeviceUuid())
259
                            .add(Constants.POST_SIGNIN_FIELD_EMAIL, email)
260
                            .add(Constants.POST_SIGNIN_FIELD_PASSWORD, password)
261
                            .add(Constants.POST_SIGNIN_FIELD_DEVICE_ENCRYPTER, "") //Constants.SIGNIN_ENCRYPTER)
262
                            .build();
73 efrain 263
                } else {*/
264
                    AesCipher encryptedEmail    = AesCipher.encrypt(deviceAes, email);
265
                    AesCipher encryptedPassword = AesCipher.encrypt(deviceAes, password);
1 gabriel 266
 
267
                    formBody = new FormBody.Builder()
268
                            .add(Constants.POST_SIGNIN_FIELD_APPLICATION_ID, String.valueOf(Configuration.APPLICATION_ID))
73 efrain 269
                            .add(Constants.POST_SIGNIN_FIELD_VARIANT_ID, String.valueOf(Configuration.VARIANT_ID))
1 gabriel 270
                            .add(Constants.POST_SIGNIN_FIELD_DEVICE_UUID, iTwoGetSkills.getPreference().getDeviceUuid())
271
                            .add(Constants.POST_SIGNIN_FIELD_EMAIL, encryptedEmail.getData())
272
                            .add(Constants.POST_SIGNIN_FIELD_PASSWORD, encryptedPassword.getData())
273
                            .add(Constants.POST_SIGNIN_FIELD_DEVICE_ENCRYPTER, Constants.SIGNIN_ENCRYPTER)
274
                            .build();
73 efrain 275
               // }
1 gabriel 276
 
277
 
278
 
279
 
280
 
281
 
282
                Request request = new Request.Builder()
283
                        .url(Configuration.URL_SIGNIN)
284
                        .post(formBody)
285
                        .build();
286
 
287
                Call call = client.newCall(request);
288
 
289
                call.enqueue(new Callback() {
290
                    public void onResponse(Call call, Response response)
291
                            throws IOException {
292
 
19 gabriel 293
                        processResponseServer(response.body().string());
1 gabriel 294
                        iTwoGetSkills.hideProgressBar();
19 gabriel 295
                        getActivity().runOnUiThread(new Runnable() {
1 gabriel 296
 
19 gabriel 297
                            @Override
298
                            public void run() {
299
                                mButtonSignIn.setEnabled(true);
300
                                mButtonSignUp.setEnabled(true);
301
                                mEditTextEmail.setEnabled(true);
302
                                mEditTextPassword.setEnabled(true);
303
                                inProgress = false;
304
                            }
1 gabriel 305
 
19 gabriel 306
                        });
307
 
1 gabriel 308
                    }
309
 
310
                    public void onFailure(Call call, IOException e) {
311
                        Log.d(TAG, "Error :  " +  e.getMessage());
312
                        iTwoGetSkills.hideProgressBar();
19 gabriel 313
                        getActivity().runOnUiThread(new Runnable() {
314
 
315
                            @Override
316
                            public void run() {
317
                                mButtonSignIn.setEnabled(true);
318
                                mButtonSignUp.setEnabled(true);
319
                                mEditTextEmail.setEnabled(true);
320
                                mEditTextPassword.setEnabled(true);
321
                                inProgress = false;
322
                            }
323
                        });
324
 
325
 
326
 
327
 
1 gabriel 328
                    }
329
                });
330
 
331
            } catch (Exception e) {
332
                iTwoGetSkills.showMessageSnackBar(e.getMessage());
333
            } finally {
334
 
335
            }
336
 
337
 
338
        }
339
    }
340
 
341
    private boolean isPasswordValid(String password) {
342
        //TODO: Replace this with your own logic
343
        return password.length() > 5;
344
    }
345
 
346
    private void processResponseServer(String dataString) {
347
        boolean success = false;
348
        boolean fatal = false;
349
        String message = "";
350
 
351
        mProgressBar.setVisibility(View.INVISIBLE);
352
 
353
        try {
354
            JSONObject objData = new JSONObject(dataString);
355
            success = objData.has("success") ? objData.getBoolean("success")  : false;
356
            if(objData.has("data")) {
357
                Object item = objData.get("data");
358
                if (item instanceof String) {
359
                    message = (String) item;
360
                }
361
                fatal = objData.has("fatal");
362
            }
363
 
364
            if(success) {
365
                JSONObject data = objData.getJSONObject("data");
366
 
367
 
368
                Calendar calendar = Calendar.getInstance();
369
                Date date = calendar.getTime();
370
                SimpleDateFormat simpleDateFormat = new SimpleDateFormat(Constants.FORMAT_DATETIME_SERVICE);
371
                String  addedOn = simpleDateFormat.format(date);
9 gabriel 372
 
373
                //Elimino antes de guardar.
19 gabriel 374
                JSONObject objUser = data.getJSONObject("user");
375
                String userUuid = objUser.getString("uuid");
376
 
9 gabriel 377
                iTwoGetSkills.getDatabase().getAnswerDao().removeAll();
378
                iTwoGetSkills.getDatabase().getQuestionDao().removeAll();
379
                iTwoGetSkills.getDatabase().getQuizDao().removeAll();
380
                iTwoGetSkills.getDatabase().getSlideDao().removeAll();
381
                iTwoGetSkills.getDatabase().getCapsuleDao().removeAll();
382
                iTwoGetSkills.getDatabase().getTopicDao().removeAll();
383
                iTwoGetSkills.getDatabase().getUserExtendedDao().removeAll();
21 gabriel 384
                iTwoGetSkills.getDatabase().getNotificationCenterDao().removeAllnotifications();
19 gabriel 385
                iTwoGetSkills.getDatabase().getProgressDao().removeAllUserUuidNotEqual(userUuid);
386
                iTwoGetSkills.getDatabase().getUserLogDao().removeAllUserUuidNotEqual(userUuid);
1 gabriel 387
                iTwoGetSkills.syncFromServer(data);
388
 
389
 
390
                Preference preference = iTwoGetSkills.getPreference();
19 gabriel 391
                preference.setUserUuid(userUuid);
1 gabriel 392
                preference.setFirstName(objUser.getString("first_name"));
393
                preference.setLastName(objUser.getString("last_name"));
394
                preference.setEmail(objUser.getString("email"));
395
                preference.setImage(objUser.getString("image"));
396
                preference.setLastDataRefresh(addedOn);
397
 
398
                JSONObject objDevice = data.getJSONObject("device");
399
                preference.setAes(objDevice.getString("aes"));
400
                preference.setPassword(objDevice.getString("password"));
3 gabriel 401
                preference.save();
1 gabriel 402
 
21 gabriel 403
                getActivity().runOnUiThread(() -> {
1 gabriel 404
 
71 efrain 405
                    iTwoGetSkills.invokeFragment(Constants.IDX_FRAGMENT_MY_CAPSULES);
21 gabriel 406
                    iTwoGetSkills.showNavigationAndToolbar();
407
                });
1 gabriel 408
 
409
 
410
                UserLog userLog = new UserLog();
411
                userLog.setUserUuid(preference.getUserUuid());
412
                userLog.setActivity(Constants.USER_LOG_ACTIVITY_SIGNIN);
413
                userLog.setAddedOn(addedOn);
414
                JSONObject json = userLog.toJson();
415
                json.put(Constants.SYNC_ADAPTER_DATA_TYPE_FIELD_NAME, Constants.SYNC_ADAPTER_DATA_TYPE_USER_LOG);
416
 
417
                Sync sync = new Sync(Constants.SYNC_ADAPTER_TYPE_SYNC, json.toString());
418
 
419
                SyncDao syncDao = iTwoGetSkills.getDatabase().getSyncDao();
420
                syncDao.insert(sync);
421
 
422
 
56 gabriel 423
                //Notificaciones en dia para calculo de dias anteriores
424
                SimpleDateFormat simpleDateFormat2 = new SimpleDateFormat(Constants.FORMAT_DATE_SERVICE);
425
                dateOn = simpleDateFormat2.format(date);
25 gabriel 426
 
427
 
428
 
56 gabriel 429
 
1 gabriel 430
            } else {
431
                if(!TextUtils.isEmpty(message)) {
25 gabriel 432
 
433
                    NotificationCenterDao notificacionDao =  iTwoGetSkills.getDatabase().getNotificationCenterDao();
434
                    com.cesams.twogetskills.entity.NotificationCenter notificacionueva;
435
                    notificacionueva = new com.cesams.twogetskills.entity.NotificationCenter();
436
 
437
                    notificacionueva.setTitle("Nuevo contenido disponible");
438
                    notificacionueva.setDate(dateOn);
439
                    notificacionueva.setDescription(message);
58 gabriel 440
                   // Log.e("Notificacion","a guardar"+notificacionueva);
25 gabriel 441
                    notificacionDao.insert(notificacionueva);
442
 
1 gabriel 443
                    iTwoGetSkills.showMessageSnackBar(message);
444
                }
445
                if(fatal) {
446
                    iTwoGetSkills.onErrorFatal();
447
                }
448
            }
449
 
450
 
451
        } catch (JSONException e) {
452
            e.printStackTrace();
453
            Log.e(TAG,  e.getMessage());
454
        }
455
 
456
 
457
    }
458
 
459
    /*
460
    @Override
461
    public void taskCallback(HttpCommResponse httpCommResponse) {
462
        inProgress = false;
463
        mEditTextEmail.setEnabled(true);
464
        mEditTextPassword.setEnabled(true);
465
 
466
        mButtonSignIn.setEnabled(true);
467
        mProgressBar.setVisibility(View.INVISIBLE);
468
 
469
        if(httpCommResponse.isSuccess()) {
470
 
471
            AnswerDao answerDao = new AnswerDao(getActivity());
472
            answerDao.removeAll();
473
 
474
            QuestionDao questionDao = new QuestionDao(getActivity());
475
            questionDao.removeAll();
476
 
477
            QuizDao quizDao = new QuizDao(getActivity());
478
            questionDao.removeAll();
479
 
480
            SlideDao slideDao = new SlideDao(getActivity());
481
            slideDao.removeAll();
482
 
483
            CapsuleDao capsuleDao = new CapsuleDao(getActivity());
484
            capsuleDao.removeAll();
485
 
486
            TopicDao topicDao = new TopicDao(getActivity());
487
            topicDao.removeAll();
488
 
489
            CompanyDao companyDao = new CompanyDao(getActivity());
490
            companyDao.removeAll();
491
 
492
            ProgressDao progressDao = new ProgressDao(getActivity());
493
            progressDao.removeAll();
494
 
495
            UserLogDao userLogDao = new UserLogDao(getActivity());
496
 
497
            UserNotificationDao userNotificationDao = new UserNotificationDao(getActivity());
498
            userNotificationDao.removeAll();
499
 
500
            try {
501
                JSONObject objData = httpCommResponse.getObjJSON().getJSONObject("data");
502
 
503
 
504
 
505
 
506
                JSONArray arrayCapsules;
507
                JSONArray arraySlides;
508
                JSONArray arrayAnswers;
509
                JSONArray arrayQuestions;
510
                JSONArray arrayProgress;
511
                JSONArray arrayQuizzes;
512
                JSONArray arrayUserLog;
513
 
514
 
515
                JSONObject objTopic;
516
                JSONObject objCapsule;
517
                JSONObject objSlide;
518
                JSONObject objAnswer;
519
                JSONObject objQuestion;
520
                JSONObject objQuiz;
521
                JSONObject objProgress;
522
                JSONObject objUserLog;
523
                int i,j,x;
524
 
525
                arrayProgress = objData.getJSONArray("progress");
526
                for(i = 0; i <  arrayProgress.length(); i++) {
527
                    objProgress = arrayProgress.getJSONObject(i);
528
 
529
                    Progress progress = new Progress();
530
                    progress.companyUuid = objProgress.getInt("company_uuid");
531
                    progress.topicUuid = objProgress.getInt("topic_uuid");
532
                    progress.capsuleUuid = objProgress.getInt("capsule_uuid");
533
                    progress.SlideUuid = objProgress.getInt("Slide_uuid");
534
                    progress.progress = objProgress.getDouble("progress");
535
                    progress.totalSlides = objProgress.getInt("total_slides");
536
                    progress.viewSlides = objProgress.getInt("view_slides");
537
                    progress.type = objProgress.getString("type");
538
                    progress.returning = objProgress.getInt("returning");
539
                    progress.returningAfterCompleted = objProgress.getInt("returning_after_completed");
540
                    progress.completed = objProgress.getInt("completed");
541
                    progress.addedOn = objProgress.getString("added_on");
542
                    progress.updatedOn = objProgress.getString("updated_on");
543
 
544
                    progressDao.insert(progress);
545
 
546
                }
547
 
548
                arrayUserLog = objData.getJSONArray("userlog");
549
                for(i = 0; i <   arrayUserLog.length(); i++) {
550
                    objUserLog =  arrayUserLog.getJSONObject(i);
551
 
552
                    UserLog userLog = new UserLog();
553
                    userLog.companyUuid  = objUserLog.getInt("company_uuid");
554
                    userLog.topicUuid    = objUserLog.getInt("topic_uuid");
555
                    userLog.capsuleUuid  = objUserLog.getInt("capsule_uuid");
556
                    userLog.SlideUuid    = objUserLog.getInt("Slide_uuid");
557
                    userLog.activity   = objUserLog.getString("activity");
558
                    userLog.addedOn    = objUserLog.getString("added_on");
559
                    userLogDao.insert(userLog);
560
                }
561
 
562
                arrayQuizzes = objData.getJSONArray("quizzes");
563
                for(i = 0; i <  arrayQuizzes.length(); i++)
564
                {
565
                    objQuiz = arrayQuizzes.getJSONObject(i);
566
                    Quiz quiz = new Quiz();
567
                    quiz.id = objQuiz.getInt("id");
568
                    quiz.companyUuid = objQuiz.getInt("company_uuid");
569
                    quiz.name = objQuiz.getString("name");
570
                    quiz.text = objQuiz.getString("text");
571
                    quiz.points = objQuiz.getInt("points");
572
                    quiz.minimumPointsRequired  = objQuiz.getInt("minimum_points_required");
573
 
574
                    Company company =  companyDao.selectById(quiz.companyUuid);
575
                    if(company == null) {
576
                        company = new Company();
577
                        company.id = objQuiz.getInt("company_uuid");
578
                        company.name  = objQuiz.getString("company_name");
579
                        company.image = objQuiz.getString("company_image");
580
 
581
                        companyDao.insert(company);
582
                    }
583
 
584
                    quizDao.insert(quiz);
585
 
586
                    arrayQuestions = objQuiz.getJSONArray("questions");
587
                    for(j = 0; j < arrayQuestions.length(); j++) {
588
                        objQuestion = arrayQuestions.getJSONObject(j);
589
                       Question question = new Question();
590
                       question.quizId = quiz.id;
591
                       question.id = objQuestion.getInt("id");
592
                       question.text = objQuestion.getString("text");
593
                       question.type = objQuestion.getString("type");
594
                       question.points = objQuestion.getInt("points");
595
                       question.maxlength = objQuestion.getInt("maxlength");
596
 
597
                        questionDao.insert(question);
598
 
599
                        arrayAnswers = objQuestion.getJSONArray("answers");
600
                        for(x = 0; x < arrayAnswers.length(); x++)
601
                        {
602
                            objAnswer = arrayAnswers.getJSONObject(x);
603
                            Answer answer = new Answer();
604
                            answer.questionId =question.id;
605
                            answer.id = objAnswer.getInt("id");
606
                            answer.text = objAnswer.getString("text");
607
                            answer.points = objAnswer.getInt("points");
608
                            answer.position = objAnswer.getInt("position");
609
                            answer.correct = objAnswer.getString("correct");
610
 
611
                            answerDao.insert(answer);
612
                        }
613
 
614
 
615
                    }
616
                }
617
 
618
 
619
 
620
 
621
 
622
                JSONArray arrayTopics = objData.getJSONArray("topics");
623
                for(i = 0; i < arrayTopics.length(); i++)
624
                {
625
                    objTopic = arrayTopics.getJSONObject(i);
626
                    Topic topic = new Topic();
627
                    topic.id = objTopic.getInt("id");
628
                    topic.companyUuid = objTopic.getInt("company_uuid");
629
                    topic.name = objTopic.getString("name");
630
                    topic.description = objTopic.getString("description");
631
                    topic.image = objTopic.getString("image");
632
                    topic.position = objTopic.getInt("position");
633
 
634
                    Company company = companyDao.selectById(topic.companyUuid);
635
                    if(company == null) {
636
                        company = new Company();
637
                        company.id = objTopic.getInt("company_uuid");
638
                        company.name  = objTopic.getString("company_name");
639
                        company.image  = objTopic.getString("company_image");
640
 
641
                        companyDao.insert(company);
642
                    }
643
 
644
                    topicDao.insert(topic);
645
 
646
                    arrayCapsules = objTopic.getJSONArray("capsules");
647
                    for(j = 0; j < arrayCapsules.length(); j++)
648
                    {
649
                        objCapsule = arrayCapsules.getJSONObject(j);
650
                        Capsule capsule = new Capsule();
651
                        capsule.topicUuid = topic.id;
652
                        capsule.id = objCapsule.getInt("id");
653
                        capsule.name = objCapsule.getString("name");
654
                        capsule.description = objCapsule.getString("description");
655
                        capsule.image = objCapsule.getString("image");
656
                        capsule.position = objCapsule.getInt("position");
657
                        capsuleDao.insert(capsule);
658
 
659
                        arraySlides = objCapsule.getJSONArray("slides");
660
                        for( x = 0; x < arraySlides.length(); x++) {
661
                            objSlide = arraySlides.getJSONObject(x);
662
                            Slide slide = new Slide();
663
                            slide.id = objSlide.getInt("id");
664
                            slide.topicUuid = capsule.topicUuid;
665
                            slide.capsuleUuid = capsule.id;
666
                            slide.quizId = objSlide.getInt("quiz_id");
667
                            slide.name = objSlide.getString("name");
668
                            slide.description = objSlide.getString("description");
669
                            slide.position = objSlide.getInt("position");
670
                            slide.type = objSlide.getString("type");
671
                            slide.file = objSlide.getString("file");
672
                            slide.background = objSlide.getString("background");
673
 
674
                            slideDao.insert(slide);
675
                        }
676
 
677
                    }
678
 
679
 
680
                }
681
 
682
                Calendar calendar = Calendar.getInstance();
683
                Date date = calendar.getTime();
684
                SimpleDateFormat simpleDateFormat = new SimpleDateFormat(Constants.FORMAT_DATETIME_SERVICE);
685
                String  addedOn = simpleDateFormat.format(date);
686
 
687
 
688
                UserLog userLog = new UserLog();
689
                userLog.activity = Constants.USER_LOG_ACTIVITY_SIGNIN;
690
                userLog.addedOn = addedOn;
691
 
692
              //  mSharedViewModel.insertUserLog(userLog);
693
 
694
                Preference preference = iTwoGetSkills.getPreference();
695
 
696
                JSONObject objUser = objData.getJSONObject("user");
697
                //mUser.id  =  objUser.getInt("id");
698
                preference.userId = objUser.getInt("id");
699
                preference.firstName =  objUser.getString("first_name");
700
                preference.lastName =  objUser.getString("last_name");
701
                preference.email =  objUser.getString("email");
702
                preference.image =  objUser.getString("image");
703
                preference.password =  objUser.getString("password");
704
                preference.rsaE = objUser.getInt("rsa_e");
705
                preference.rsaD = objUser.getInt("rsa_d");
706
                preference.rsaN = objUser.getInt("rsa_n");
707
                preference.save(getActivity());
708
 
709
 
710
                JSONObject json = userLog.toJson();
711
                json.put("user_id", preference.userId);
712
                json.put(Constants.SYNC_ADAPTER_DATA_TYPE_FIELD_NAME, Constants.SYNC_ADAPTER_DATA_TYPE_USER_LOG);
713
 
714
                Sync sync = new Sync();
715
                sync.type = Constants.SYNC_ADAPTER_TYPE_SYNC;
716
                sync.data = json.toString();
717
 
718
                SyncDao syncDao = new SyncDao(getActivity());
719
                syncDao.insert(sync);
720
                syncDao.close();
721
 
722
                iTwoGetSkills.reloadNavHeader();
723
                iTwoGetSkills.invokeFragment(Constants.IDX_FRAGMENT_TOPICS);
724
 
725
            } catch (JSONException e) {
726
                iTwoGetSkills.showMessageSnackBar(e.getMessage());
727
            }
728
 
729
            answerDao.close();
730
            questionDao.close();
731
            questionDao.close();
732
            slideDao.close();
733
            capsuleDao.close();
734
            topicDao.close();
735
            companyDao.close();
736
            progressDao.close();
737
            userLogDao.close();
738
            userNotificationDao.close();
739
 
740
 
741
        } else {
742
            iTwoGetSkills.showMessageSnackBar(httpCommResponse.getMessage());
743
            if(httpCommResponse.isFatal()) {
744
                iTwoGetSkills.onErrorFatal();
745
            }
746
        }
747
    }
748
 
749
     */
750
 
751
    @Override
752
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
753
                             Bundle savedInstanceState) {
754
        // Inflate the layout for this fragment
755
        return inflater.inflate(R.layout.fragment_signin, container, false);
756
    }
19 gabriel 757
}