package com.example.citrusclient.viewmodels;
import androidx.lifecycle.MutableLiveData;
import androidx.lifecycle.ViewModel;
import com.example.citrusclient.models.Book;
import com.example.citrusclient.rest.BooksRest;
import java.util.ArrayList;
import retrofit2.Call;
import retrofit2.Callback;
import retrofit2.Response;
import retrofit2.Retrofit;
import retrofit2.converter.jackson.JacksonConverterFactory;
public class BooksViewModel extends ViewModel {
private final Retrofit retrofit;
private final BooksRest booksRest;
private final MutableLiveData<ArrayList<Book>> booksLiveData;
private final MutableLiveData<String> titleLiveData;
private final MutableLiveData<String> colorLiveData;
private final MutableLiveData<String> publicityLiveData;
private final MutableLiveData<String> errorLiveData;
private final MutableLiveData<Boolean> successDeleteBookLiveData;
private final MutableLiveData<String> delBookErrorLivedata;
public BooksViewModel() {
this.retrofit = new Retrofit.Builder()
.baseUrl("http://nitta-lab-www.is.konan-u.ac.jp/citrus/")
.addConverterFactory(JacksonConverterFactory.create())
.build();
this.booksRest = retrofit.create(BooksRest.class);
this.booksLiveData = new MutableLiveData<>();
this.titleLiveData = new MutableLiveData<>();
this.colorLiveData = new MutableLiveData<>();
this.publicityLiveData = new MutableLiveData<>();
this.errorLiveData = new MutableLiveData<>();
this.successDeleteBookLiveData = new MutableLiveData<>();
this.delBookErrorLivedata = new MutableLiveData<>();
}
//public MutableLiveData<Book> getBookLiveData() { return bookLiveData;}
public MutableLiveData<Boolean> getSuccessDeleteBookLiveData() {
return successDeleteBookLiveData;
}
/*public void createBook(String accountId, String token , String title, String color, Boolean publicity){
Call<String> call = booksRest.createBook(accountId, token , title, color, publicity);
call.enqueue(new Callback<String>() {
@Override
public void onResponse(Call<String> call, Response<String> response) {
if(response.isSuccessful()) {
System.out.println("success!" + response.body());
}else {
System.out.println("fail");
errorLiveData.setValue(parseStatusCode(response.code()));
}
}
@Override
public void onFailure(Call<String> call, Throwable t) {
}
});
}*/
public void loadBooks(String account_id, String token){
// Call<ArrayList<Book>> call = booksRest.getBooks(account_id);
//
// call.enqueue(new Callback<ArrayList<Book>>() {
// @Override
// public void onResponse(Call<ArrayList<Book>> call, Response<ArrayList<Book>> response) {
// if (response.isSuccessful()) {
// ArrayList<Book> book = response.body();
// //for()
// }
// }
//
// @Override
// public void onFailure(Call<ArrayList<Book>> call, Throwable t) {
//
// }
// });
}
/*public void deleteBook(String account_id, Integer book_id, String token){
Call<ArrayList<Book>> call = booksRest.deleteBook(account_id, book_id, token);
call.enqueue(new Callback<Void>() {
@Override
public void onResponse(Call<Void> call, Response<Void> response) {
if (response.isSuccessful()) {
deleteBookLiveData(account_id, book_id);
System.out.println("DELETE");
} else {
System.out.println("response error");
}
}
@Override
public void onFailure(Call<Void> call, Throwable t) {
System.out.println("correspondence error" + t);
}
});
}*/
private void deleteBookLiveData(String account_id, Integer book_id) {
ArrayList<Book> delData = new ArrayList<>();
}
/*public void setTitle(String account_id, Integer book_id, String title, String token){
Call<Void> call = booksRest.setTitle(account_id, book_id, title, token);
call.enqueue(new Callback<Void>() {
@Override
public void onResponse(Call<Void> call, Response<Void> response) {
if (response.isSuccessful()){
titleLiveData.setValue(title);
System.out.println(response.code());
System.out.println("Success SetTiTle" + title);
} else {
System.out.println("response error");
}
}
@Override
public void onFailure(Call<Void> call, Throwable t) {
System.out.println("NetWorkError" + t);
}
});
}
public void setColor(String account_id, Integer book_id, String color, String token){
Call<Void> call = booksRest.setColor(account_id, book_id, color, token);
call.enqueue(new Callback<Void>() {
@Override
public void onResponse(Call<Void> call, Response<Void> response) {
if (response.isSuccessful()){
colorLiveData.setValue(color);
System.out.println(response.code());
System.out.println("Success SetTiTle" + color);
} else {
System.out.println("response error");
}
}
@Override
public void onFailure(Call<Void> call, Throwable t) {
System.out.println("NetWorkError" + t);
}
});
}
public void setPublicity(String account_id, Integer book_id, String publicity, String token){
Call<Void> call = booksRest.setpublicity(account_id, book_id, publicity, token);
call.enqueue(new Callback<Void>() {
@Override
public void onResponse(Call<Void> call, Response<Void> response) {
if (response.isSuccessful()){
publicityLiveData.setValue(publicity);
System.out.println(response.code());
System.out.println("Success SetTiTle" + publicity);
} else {
System.out.println("response error");
}
}
@Override
public void onFailure(Call<Void> call, Throwable t) {
System.out.println("NetWorkError" + t);
}
});
}*/
private String parseStatusCode(Integer code) {
switch (code) {
case 404:
System.out.println("見つかりませんでした");
return null;
/*case 401:
System.out.println("見つかりませんでした");
return ErrorType.InvalidToken.getText();
case 400:
System.out.println("見つかりませんでした");
return ErrorType.ResponseError.getText();
case 500:
System.out.println("見つかりませんでした");
return ErrorType.ServerError.getText();*/
default:
System.out.println("見つかりませんでした");
return null;
}
}
}