
package ru.loparev.rmp

import android.content.Intent
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.util.Log
import android.view.View
import android.widget.Toast
import androidx.appcompat.app.AlertDialog
import kotlinx.android.synthetic.main.activity_signin.*
import retrofit2.*
import retrofit2.converter.gson.GsonConverterFactory
import ru.loparev.rmp.api.Api
import ru.loparev.rmp.models.ResponseBody
import ru.loparev.rmp.models.UserLogin

class MainActivity : AppCompatActivity() {
    //создается активность
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        //назначается xml активности
        setContentView(R.layout.activity_signin)
        //установка основной темы приложения
        Thread.sleep(3000)
        setTheme(R.style.AppTheme)


    }


    fun createNewAccount(view: View) {
        val intent = Intent(this, SingUpActivity::class.java)
        startActivity(intent)
    }

    //Функция, реализующая всплывающее сообщение
    fun showMessage(title: String?, Message: String?) {
        val builder = AlertDialog.Builder(this)
        builder.setTitle(title)
        builder.setMessage(Message)
        builder.setIcon(R.drawable.iconpassword)
        builder.show()
    }

    //Функция входа в приложение
    fun buttonSingIn(view: View) {
        //получаем логин и пароль из текстовых полей
        val login = editTextSingInPersonName.text
        val password = editSingInTextPassword.text
        //Создаем конструктор Retrofit с параметрами URL и указываем типа конвертера данных
        val retrofit = Retrofit.Builder()
            .baseUrl("http://cars.areas.su/")
            .addConverterFactory(GsonConverterFactory.create())
            .build()
        //Создаем экземпля retrofit и указываем интерфейс для запрооса
        val postLoginAPI = retrofit.create(Api.GetTokenLogIn::class.java)
        //Вызываем функцию из интерфейса и передаем ей логин и пароль
        val call = postLoginAPI?.login(UserLogin(login.toString(), password.toString()))
        //асинхронно выполняем запрос
        call?.enqueue(object : Callback<ResponseBody> {
            //если ответ успешен
            override fun onResponse(p0: Call<ResponseBody>?, p1: Response<ResponseBody>?) {
                //если ответ не пустой
                if (p1 != null) {
                        //если ответ: Пользователь в системе, или выдается токен открываем активность карты
                    if (p1.body().notice["answer"] == "User is active" || p1.body().notice.containsKey(
                            "token"
                        )
                    ) {
                        //Создаем намерение (соединяем нашу активность и активность с картой)
                        val intent = Intent(this@MainActivity, MapsActivity::class.java)
                        //Открываем активность карты
                        startActivity(intent)
                        //Протоколируем в терминал
                        Log.d("TAG1", "ACTIVE!")


                    } else {
                        //сообщение об ошибке
                        Toast.makeText(this@MainActivity, p1.body().notice["answer"] , Toast.LENGTH_SHORT).show()
                    }
                }
            }

            override fun onFailure(p0: Call<ResponseBody>?, p1: Throwable?) {
                //действия при ошибках с сетью
                Log.d("TAG1", p0.toString())
            }
        }
        )
    }


}
