Proyectos de Subversion Android Microlearning - Inconcert

Rev

Rev 7 | Rev 12 | Ir a la última revisión | | Comparar con el anterior | Ultima modificación | Ver Log |

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