Advertisement
Dwitio

DetailFavoriteActivity

Dec 3rd, 2019
250
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Kotlin 7.22 KB | None | 0 0
  1. package tgs.app.submission1_aplikasifootballleague
  2.  
  3. import android.database.sqlite.SQLiteConstraintException
  4. import android.os.Bundle
  5. import android.view.Menu
  6. import android.view.MenuItem
  7. import androidx.appcompat.app.AppCompatActivity
  8. import androidx.core.content.ContextCompat
  9. import com.bumptech.glide.Glide
  10. import com.google.android.material.snackbar.Snackbar
  11. import com.google.gson.Gson
  12. import kotlinx.android.synthetic.main.activity_detail_match.*
  13. import org.jetbrains.anko.db.classParser
  14. import org.jetbrains.anko.db.delete
  15. import org.jetbrains.anko.db.insert
  16. import org.jetbrains.anko.db.select
  17. import tgs.app.submission1_aplikasifootballleague.api.ApiRepository
  18. import tgs.app.submission1_aplikasifootballleague.db.Favorite
  19. import tgs.app.submission1_aplikasifootballleague.db.database
  20. import tgs.app.submission1_aplikasifootballleague.model.LastMatch
  21. import tgs.app.submission1_aplikasifootballleague.model.Team
  22. import tgs.app.submission1_aplikasifootballleague.presenter.DetailEventPresenter
  23. import tgs.app.submission1_aplikasifootballleague.presenter.DetailPresenter
  24. import tgs.app.submission1_aplikasifootballleague.util.invisible
  25. import tgs.app.submission1_aplikasifootballleague.util.visible
  26. import tgs.app.submission1_aplikasifootballleague.view.DetailView
  27. import tgs.app.submission1_aplikasifootballleague.view.LastMatchView
  28.  
  29. class DetailFavoriteActivity : AppCompatActivity(), DetailView, LastMatchView {
  30.  
  31.     companion object {
  32.         const val ID_DETAIL_EVENT = "ID_DETAIL_EVENT"
  33.     }
  34.  
  35.     private lateinit var lastMatch: LastMatch
  36.     private lateinit var presenter: DetailPresenter
  37.     private lateinit var detailPresenter: DetailEventPresenter
  38.     private lateinit var id: String
  39.     private var isFavorite: Boolean = false
  40.     private var menuItem: Menu? = null
  41.  
  42.     override fun onCreate(savedInstanceState: Bundle?) {
  43.         super.onCreate(savedInstanceState)
  44.         setContentView(R.layout.activity_detail_favorite)
  45.  
  46.         id = intent.extras?.getString(ID_DETAIL_EVENT).toString()
  47.  
  48.         detailPresenter = DetailEventPresenter(
  49.             this, ApiRepository(), Gson()
  50.         )
  51.         detailPresenter.getEventDetail(id)
  52.  
  53.         presenter = DetailPresenter(
  54.             this,
  55.             ApiRepository(),
  56.             Gson()
  57.         )
  58.  
  59.         favoriteState()
  60.  
  61.         supportActionBar?.title = "Detail Match"
  62.         supportActionBar?.setDisplayHomeAsUpEnabled(true)
  63.     }
  64.  
  65.     private fun favoriteState() {
  66.         database.use {
  67.             val result = select(Favorite.TABLE_FAVORITE)
  68.                 .whereArgs("(ID_EVENT = {id})",
  69.                     "id" to id)
  70.             val favorite = result.parseList(classParser<Favorite>())
  71.             if (favorite.isNotEmpty()) isFavorite = true
  72.         }
  73.     }
  74.  
  75.     private fun setupLayout(data: List<LastMatch>) {
  76.         lastMatch = LastMatch(
  77.             data[0].idEvent,
  78.             data[0].dateEvent,
  79.             data[0].strHomeTeam,
  80.             data[0].strAwayTeam,
  81.             data[0].intHomeScore,
  82.             data[0].intAwayScore
  83.         )
  84.  
  85.         last_event_detail.text = data[0].strEvent
  86.         last_date_event_detail.text = data[0].dateEvent
  87.         last_home_team_detail.text = data[0].strHomeTeam
  88.         last_away_team_detail.text = data[0].strAwayTeam
  89.         if (data[0].intHomeScore == null && data[0].intAwayScore == null){
  90.             last_home_score_detail.text = "-"
  91.             last_away_score_detail.text = "-"
  92.         } else {
  93.             last_home_score_detail.text = data[0].intHomeScore
  94.             last_away_score_detail.text = data[0].intAwayScore
  95.         }
  96.         goal_home.text = data[0].strHomeGoalDetails
  97.         goal_away.text = data[0].strAwayGoalDetails
  98.         goal_keeper_home.text = data[0].strHomeLineupGoalkeeper
  99.         goal_keeper_away.text = data[0].strAwayLineupGoalkeeper
  100.         defense_home.text = data[0].strHomeLineupDefense
  101.         defense_away.text = data[0].strAwayLineupDefense
  102.         midfield_home.text = data[0].strHomeLineupMidfield
  103.         midfield_away.text = data[0].strAwayLineupMidfield
  104.         fordward_home.text = data[0].strHomeLineupForward
  105.         fordward_away.text = data[0].strAwayLineupForward
  106.         substitutes_home.text = data[0].strHomeLineupSubstitutes
  107.         substitutes_away.text = data[0].strAwayLineupSubstitutes
  108.     }
  109.  
  110.     override fun hideLoading() {
  111.         loading_detail.invisible()
  112.     }
  113.  
  114.     override fun showLoading() {
  115.         loading_detail.visible()
  116.     }
  117.  
  118.     override fun showLastMatch(data: List<LastMatch>) {
  119.         setupLayout(data)
  120.         presenter.getTeamLogo(data[0].idHomeTeam!!, data[0].idAwayTeam!!)
  121.     }
  122.  
  123.     override fun showTeamLogo(logoHome: List<Team>, logoAway: List<Team>) {
  124.         Glide.with(applicationContext)
  125.             .load(logoHome[0].strTeamBadge)
  126.             .into(last_gambar_home_team_detail)
  127.  
  128.         Glide.with(applicationContext)
  129.             .load(logoAway[0].strTeamBadge)
  130.             .into(last_gambar_away_team_detail)
  131.     }
  132.  
  133.     override fun onCreateOptionsMenu(menu: Menu?): Boolean {
  134.         menuInflater.inflate(R.menu.detail_menu, menu)
  135.         menuItem = menu
  136.         setFavorite()
  137.         return true
  138.     }
  139.  
  140.     private fun setFavorite() {
  141.         if (isFavorite){
  142.             menuItem?.getItem(0)?.icon = ContextCompat.getDrawable(this, R.drawable.ic_added_to_favorites)
  143.         } else {
  144.             menuItem?.getItem(0)?.icon = ContextCompat.getDrawable(this, R.drawable.ic_add_to_favorites)
  145.         }
  146.     }
  147.  
  148.     override fun onOptionsItemSelected(item: MenuItem): Boolean {
  149.         return when (item.itemId) {
  150.             android.R.id.home -> {
  151.                 finish()
  152.                 true
  153.             }
  154.             R.id.add_to_favorite -> {
  155.                 if (isFavorite) removeFromFavorite() else addToFavorite()
  156.  
  157.                 isFavorite = !isFavorite
  158.                 setFavorite()
  159.                 true
  160.             }
  161.             else -> super.onOptionsItemSelected(item)
  162.         }
  163.     }
  164.  
  165.     private fun addToFavorite(){
  166.         try {
  167.             database.use {
  168.                 insert(Favorite.TABLE_FAVORITE,
  169.                     Favorite.ID_EVENT to lastMatch.idEvent,
  170.                     Favorite.DATE_EVENT to lastMatch.dateEvent,
  171.                     Favorite.STR_HOME_TEAM to lastMatch.strHomeTeam,
  172.                     Favorite.STR_AWAY_TEAM to lastMatch.strAwayTeam,
  173.                     Favorite.INT_HOME_TEAM to lastMatch.intHomeScore,
  174.                     Favorite.INT_AWAY_TEAM to lastMatch.intAwayScore)
  175.             }
  176.             Snackbar.make(relativeLayoutUtama, "Added to Favorite", Snackbar.LENGTH_SHORT).show()
  177.         } catch (e: SQLiteConstraintException){
  178.             Snackbar.make(relativeLayoutUtama, "Failed added to Favorite", Snackbar.LENGTH_SHORT).show()
  179.         }
  180.     }
  181.  
  182.     private fun removeFromFavorite(){
  183.         try {
  184.             database.use {
  185.                 delete(Favorite.TABLE_FAVORITE, "(ID_EVENT = {id})",
  186.                     "id" to id)
  187.             }
  188.             Snackbar.make(relativeLayoutUtama, "Remove from Favorite", Snackbar.LENGTH_SHORT).show()
  189.         } catch (e: SQLiteConstraintException){
  190.             Snackbar.make(relativeLayoutUtama, "Failed remove from Favorite", Snackbar.LENGTH_SHORT).show()
  191.         }
  192.     }
  193. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement