Skip to content

Commit

Permalink
[feat] #123 Project Accept & Reject & Delete API Connect
Browse files Browse the repository at this point in the history
  • Loading branch information
peter-j0y committed Mar 29, 2022
1 parent a58e5fc commit 3b223e8
Show file tree
Hide file tree
Showing 18 changed files with 375 additions and 34 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import android.content.Context
import android.content.Intent
import android.content.IntentSender
import android.util.Log
import android.widget.Button
import android.widget.Toast
import androidx.navigation.findNavController
import androidx.navigation.fragment.findNavController
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,7 @@ package com.example.infraandroid.myinfo.myideamanage.model

import com.example.infraandroid.category.model.ResponseLookUpAllProjectData
import retrofit2.Call
import retrofit2.http.GET
import retrofit2.http.Header
import retrofit2.http.PATCH
import retrofit2.http.Query
import retrofit2.http.*

interface MyProjectService {
@GET("/project/myProject?")
Expand All @@ -28,4 +25,18 @@ interface MyProjectService {
@Query("user_id") userId: String,
@Query("pj_num") pjNum: Int?
): Call<ResponseViewProjectApplyData>

@PATCH("/project/member")
fun acceptTeamMember(
@Header("X-ACCESS-TOKEN") jwt: String,
@Header("X-REFRESH-TOKEN") refreshToken: Int,
@Body body: RequestAcceptData
): Call<ResponseAcceptData>

@HTTP(method="DELETE", hasBody=true, path="/project/del")
fun deleteProject(
@Header("X-ACCESS-TOKEN") jwt: String,
@Header("X-REFRESH-TOKEN") refreshToken: Int,
@Body body: RequestDeleteProjectData
): Call<ResponseDeleteProjectData>
}
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,14 @@ class MyProjectViewModel : ViewModel() {
private val _currentObservingProjectNum = MutableLiveData<Int>()
val currentObservingProjectNum: LiveData<Int> = _currentObservingProjectNum

private val _currentApplyUserId = MutableLiveData<String>()
val currentApplyUserId: LiveData<String> = _currentApplyUserId

fun updateObservingProjectNum(projectNum: Int){
_currentObservingProjectNum.value = projectNum
}

fun updateCurrentApplyUserId(userId: String){
_currentApplyUserId.value = userId
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
package com.example.infraandroid.myinfo.myideamanage.model

data class RequestAcceptData(
val pj_inviteStatus: String,
val pj_num: Int?,
val user_id: String
)
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
package com.example.infraandroid.myinfo.myideamanage.model

data class RequestDeleteProjectData(
val pj_num: Int?,
val user_id: String
)
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
package com.example.infraandroid.myinfo.myideamanage.model

data class ResponseAcceptData(
val code: Int,
val isSuccess: Boolean,
val message: String,
val result: Result
){
data class Result(
val pj_inviteStatus: String
)
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
package com.example.infraandroid.myinfo.myideamanage.model

data class ResponseDeleteProjectData(
val code: Int,
val isSuccess: Boolean,
val message: String,
val result: Result
){
data class Result(
val comment: String
)
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,19 +2,108 @@ package com.example.infraandroid.myinfo.myideamanage.view

import android.app.Dialog
import android.content.Context
import android.content.res.Resources
import android.graphics.Color
import android.graphics.Rect
import android.graphics.drawable.ColorDrawable
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.TextView
import android.widget.Toast
import androidx.fragment.app.DialogFragment
import androidx.lifecycle.ViewModelProvider
import com.example.infraandroid.R
import com.example.infraandroid.databinding.MyInfoMyIdeaAcceptWarningBinding
import com.example.infraandroid.myinfo.myideamanage.model.MyProjectViewModel
import com.example.infraandroid.myinfo.myideamanage.model.RequestAcceptData
import com.example.infraandroid.myinfo.myideamanage.model.ResponseAcceptData
import com.example.infraandroid.util.InfraApplication
import com.example.infraandroid.util.ServiceCreator
import retrofit2.Call
import retrofit2.Callback
import retrofit2.Response

// 내 정보 > 내 아이디어 > 팀원 탭 > 내 팀원 관리 > 거절하기 클릭 시 나오는 dialog
class WarningAcceptDialog(private val userId: String, private val userNickName: String) : DialogFragment() {
private var mBinding : MyInfoMyIdeaAcceptWarningBinding?=null
private lateinit var viewModel : MyProjectViewModel

// 내 정보 > 내 아이디어 > 팀원 탭 > 신청관리 > 신청 수락 시 나오는 dialog
class WarningAcceptDialog(context: Context): Dialog(context) {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)

setContentView(R.layout.my_info_my_idea_accept_warning)
activity?.run{
viewModel = ViewModelProvider(this, ViewModelProvider.NewInstanceFactory())
.get(MyProjectViewModel::class.java)
}
}

override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
val binding = MyInfoMyIdeaAcceptWarningBinding.inflate(inflater, container, false)
mBinding = binding

return mBinding?.root
}

override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)

mBinding?.warningTeamMemNameTv?.text = userNickName

mBinding?.warningOkayButton?.setOnClickListener {
val requestAcceptData = RequestAcceptData(
pj_inviteStatus = "승인완료",
pj_num = viewModel.currentObservingProjectNum.value,
user_id = userId
)

val call: Call<ResponseAcceptData> = ServiceCreator.myProjectService
.acceptTeamMember(InfraApplication.prefs.getString("jwt", "null"), InfraApplication.prefs.getString("refreshToken", "null").toInt(), requestAcceptData)

call.enqueue(object: Callback<ResponseAcceptData> {
override fun onResponse(
call: Call<ResponseAcceptData>,
response: Response<ResponseAcceptData>
) {
if(response.isSuccessful){
when(response.body()?.code){
1000->{
Toast.makeText(requireActivity(), "거절했습니다", Toast.LENGTH_SHORT).show()
dismiss()
}
}
}
}

override fun onFailure(call: Call<ResponseAcceptData>, t: Throwable) {
TODO("Not yet implemented")
}

})
}

mBinding?.warningCancelButton?.setOnClickListener {
dismiss()
}
}

override fun onActivityCreated(savedInstanceState: Bundle?) {
super.onActivityCreated(savedInstanceState)

setWidthPercent(90)
}

//배경을 투명하게 설정
window!!.setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT))
fun DialogFragment.setWidthPercent(percentage: Int) {
val percent = percentage.toFloat() / 100
val dm = Resources.getSystem().displayMetrics
val rect = dm.run { Rect(0, 0, widthPixels, heightPixels) }
val percentWidth = rect.width() * percent
dialog?.window?.setLayout(percentWidth.toInt(), ViewGroup.LayoutParams.WRAP_CONTENT)
dialog?.window?.setBackgroundDrawableResource(R.drawable.warning_background)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,12 +6,35 @@ import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.Toast
import androidx.fragment.app.DialogFragment
import androidx.lifecycle.ViewModel
import androidx.lifecycle.ViewModelProvider
import androidx.navigation.findNavController
import androidx.navigation.fragment.findNavController
import com.example.infraandroid.R
import com.example.infraandroid.databinding.MyInfoMyProjectDeleteWarningBinding
import com.example.infraandroid.myinfo.myideamanage.model.MyProjectViewModel
import com.example.infraandroid.myinfo.myideamanage.model.RequestDeleteProjectData
import com.example.infraandroid.myinfo.myideamanage.model.ResponseDeleteProjectData
import com.example.infraandroid.util.InfraApplication
import com.example.infraandroid.util.ServiceCreator
import retrofit2.Call
import retrofit2.Callback
import retrofit2.Response

class WarningDeleteDialog: DialogFragment() {
private var mBinding : MyInfoMyProjectDeleteWarningBinding? = null
private lateinit var viewModel : MyProjectViewModel
private var mBinding : MyInfoMyProjectDeleteWarningBinding? = null

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)

activity?.run{
viewModel = ViewModelProvider(this, ViewModelProvider.NewInstanceFactory())
.get(MyProjectViewModel::class.java)
}
}

override fun onCreateView(
inflater: LayoutInflater,
Expand All @@ -28,7 +51,35 @@ class WarningDeleteDialog: DialogFragment() {
super.onViewCreated(view, savedInstanceState)

mBinding?.warningOkayButton?.setOnClickListener {
// 삭제 버튼 눌렀을 때
val requestDeleteProjectData = RequestDeleteProjectData(
user_id = InfraApplication.prefs.getUserId(),
pj_num = viewModel.currentObservingProjectNum.value
)
val call : Call<ResponseDeleteProjectData> = ServiceCreator.myProjectService
.deleteProject(InfraApplication.prefs.getString("jwt", "null"),
InfraApplication.prefs.getString("refreshToken", "null").toInt(),
requestDeleteProjectData)

call.enqueue(object: Callback<ResponseDeleteProjectData> {
override fun onResponse(
call: Call<ResponseDeleteProjectData>,
response: Response<ResponseDeleteProjectData>
) {
if(response.isSuccessful){
when(response.body()?.code){
1000->{
dismiss()
findNavController().navigate(R.id.action_myInfoTeamIdeaFragment_to_myInfoMyIdeaFragment)
}
}
}
}

override fun onFailure(call: Call<ResponseDeleteProjectData>, t: Throwable) {
TODO("Not yet implemented")
}

})
}

mBinding?.warningCancelButton?.setOnClickListener {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,19 +2,44 @@ package com.example.infraandroid.myinfo.myideamanage.view

import android.app.Dialog
import android.content.Context
import android.content.res.Resources
import android.graphics.Color
import android.graphics.Rect
import android.graphics.drawable.ColorDrawable
import android.os.Bundle
import android.view.View
import android.view.ViewGroup
import androidx.fragment.app.DialogFragment
import com.example.infraandroid.R
import com.example.infraandroid.databinding.MyInfoMyIdeaKickOutWarningBinding

// 내 정보 > 내 아이디어 > 팀원 탭 > 신청관리 > 강퇴 시 나오는 dialog
class WarningKickOutDialog : DialogFragment() {
private var mBinding : MyInfoMyIdeaKickOutWarningBinding?=null

// 내 정보 > 내 아이디어 > 팀원 탭 > 신청관리 > 신청 거절 시 나오는 dialog
class WarningKickOutDialog(context: Context): Dialog(context) {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)

setContentView(R.layout.my_info_my_idea_kick_out_warning)
}

override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)


}

override fun onActivityCreated(savedInstanceState: Bundle?) {
super.onActivityCreated(savedInstanceState)

setWidthPercent(90)
}

//배경을 투명하게 설정
window!!.setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT))
fun DialogFragment.setWidthPercent(percentage: Int) {
val percent = percentage.toFloat() / 100
val dm = Resources.getSystem().displayMetrics
val rect = dm.run { Rect(0, 0, widthPixels, heightPixels) }
val percentWidth = rect.width() * percent
dialog?.window?.setLayout(percentWidth.toInt(), ViewGroup.LayoutParams.WRAP_CONTENT)
dialog?.window?.setBackgroundDrawableResource(R.drawable.warning_background)
}
}
Loading

0 comments on commit 3b223e8

Please sign in to comment.