Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.attractgroup.elevatelongfellow.di.presenter;
- import android.app.Activity;
- import android.content.ContentValues;
- import android.content.Context;
- import android.content.Intent;
- import android.net.Uri;
- import android.provider.MediaStore;
- import android.support.v7.widget.AppCompatEditText;
- import android.support.v7.widget.SwitchCompat;
- import android.view.View;
- import android.widget.EditText;
- import android.widget.ProgressBar;
- import com.attractgroup.elevatelongfellow.R;
- import com.attractgroup.elevatelongfellow.api.ApiManager;
- import com.attractgroup.elevatelongfellow.di.view.CreateRoomEventView;
- import com.attractgroup.elevatelongfellow.model.Building;
- import com.attractgroup.elevatelongfellow.model.ImagePic;
- import com.attractgroup.elevatelongfellow.model.ItemCommon;
- import com.attractgroup.elevatelongfellow.model.Room;
- import com.attractgroup.elevatelongfellow.model.User;
- import com.attractgroup.elevatelongfellow.prefs.PrefsManager;
- import com.attractgroup.elevatelongfellow.realm.RealmManager;
- import com.attractgroup.elevatelongfellow.utils.Constants;
- import com.attractgroup.elevatelongfellow.utils.DialogUtil;
- import com.attractgroup.elevatelongfellow.utils.Util;
- import com.attractgroup.elevatelongfellow.utils.Validator;
- import com.attractgroup.elevatelongfellow.utils.ViewForResult;
- import java.io.File;
- import java.util.ArrayList;
- import java.util.Calendar;
- import java.util.Date;
- import javax.inject.Inject;
- import okhttp3.MediaType;
- import okhttp3.MultipartBody;
- import okhttp3.RequestBody;
- /**
- * Created by Nakedman on 08.12.17.
- */
- public class CreateRoomEventPresenter implements ICreateRoomEventPresenter {
- private ApiManager apiManager;
- private ItemCommon event;
- private RealmManager realmManager;
- private PrefsManager prefsManager;
- private CreateRoomEventView view;
- private Uri uri;
- private boolean lock = false;
- private ProgressBar progressBar;
- private Context ctx;
- private int status;
- private Room room;
- private int validPeriod;
- @Inject
- public CreateRoomEventPresenter(ApiManager apiManager, RealmManager realmManager, PrefsManager prefsManager) {
- this.apiManager = apiManager;
- this.realmManager = realmManager;
- this.prefsManager = prefsManager;
- event = new ItemCommon();
- }
- @Override
- public void onAttach(CreateRoomEventView v, Context ctx) {
- this.view = v;
- this.ctx = ctx;
- }
- // @Override
- // public void showHelpPopup(Room room) {
- // HelpFragment fragment = new HelpFragment();
- // Bundle bundle = new Bundle();
- // bundle.putString("text", room.getHelpInfo());
- // fragment.setArguments(bundle);
- // ((BaseActivity) ctx).changeFragment(fragment, "wow1", false);
- // }
- @Override
- public void getItemImage() {
- uri = ctx.getContentResolver().insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, new ContentValues());
- Util.getImage(ctx, (ViewForResult) view, uri, !Util.isEmpty(event.getImage()));
- }
- @Override
- public void bind(ProgressBar progressBar) {
- this.progressBar = progressBar;
- }
- @Override
- public void parseResult(int requestCode, int resultCode, Intent data) {
- if (data != null && data.hasExtra(Constants.Extra.REMOVE_IMG) && !Util.isEmpty(event.getImage())) {
- deleteImage();
- return;
- }
- if (requestCode == Constants.Request.GET_CONTENT && resultCode == Activity.RESULT_OK)
- parse(data);
- }
- private void parse(Intent data) {
- uri = data != null ? data.getData() : uri;
- if (uri == null) {
- new DialogUtil(ctx).showInfo("Device error");
- return;
- }
- String path = Util.getFilePathFromUri(ctx, uri);
- editItem(path);
- view.updateImage(uri);
- }
- private void editItem(String path) {
- lock = true;
- showProgressBar(true);
- File file = new File(path);
- RequestBody fileBody = RequestBody.create(MediaType.parse("image/*"), file);
- MultipartBody.Part part = MultipartBody.Part.createFormData("qqfile", file.getName(), fileBody);
- apiManager.addImage(ctx, part, this);
- }
- @Override
- public void add(AppCompatEditText eventName, AppCompatEditText eventStart, AppCompatEditText eventEnd,
- AppCompatEditText eventDescription, SwitchCompat isPublic, ArrayList<Building> buildings,
- ArrayList<User> users, Calendar dateOfEventStart, Calendar dateOfEventEnd, Room room, SwitchCompat isRSVP,
- EditText rsvpLimit, String setupRequested) {
- if (lock) return;
- this.room = room;
- String name = Validator.checkName(eventName);
- String desc = Util.trim(eventDescription);
- if (Util.isEmpty(name) || !Validator.checkTimePeriodOfEvent(eventStart, eventEnd, dateOfEventStart, dateOfEventEnd) || !Validator.checkDesc(eventDescription))
- return;
- String fromPeriod = Util.convertTimeFromMillis(dateOfEventStart.getTimeInMillis(), Constants.TimeFormat.SERVER_FORMAT_24_HOURS, "UTC");
- String toPeriod = Util.convertTimeFromMillis(dateOfEventEnd.getTimeInMillis(), Constants.TimeFormat.SERVER_FORMAT_24_HOURS, "UTC");
- String publishAt = Util.convertTimeFromMillis(new Date().getTime(), Constants.TimeFormat.SERVER_FORMAT_WITHOUT_TIME, "UTC");
- ArrayList<String> buildId = null;
- if (buildings != null) {
- buildId = new ArrayList<>();
- for (Building build : buildings) {
- buildId.add(build.getId());
- }
- }
- ArrayList<String> userId = null;
- if (users != null) {
- userId = new ArrayList<>();
- for (User user : users) {
- userId.add(user.getId());
- }
- }
- ItemCommon newEvent = new ItemCommon(name, desc, publishAt, event.getPathImage(), buildId,
- String.valueOf(room.getId()), fromPeriod, toPeriod, !isPublic.isChecked(), userId, isRSVP.isChecked(),
- Util.setNullIf(rsvpLimit.getEditableText().toString().equals("") ? "0"
- : rsvpLimit.getEditableText().toString(), isRSVP.isChecked()), setupRequested);
- lock = true;
- showProgressBar(true);
- apiManager.addEvent(ctx, newEvent, null, this);
- }
- public String getUserName() {
- return realmManager.getUser(prefsManager.getUserId()).getName();
- }
- public User getMyUser() {
- return realmManager.getUser(prefsManager.getUserId());
- }
- @Override
- public void edit(AppCompatEditText eventName, AppCompatEditText eventStart, AppCompatEditText eventEnd,
- AppCompatEditText eventDescription, SwitchCompat isPublic, ArrayList<Building> buildings,
- ArrayList<User> users, Calendar dateOfEventStart, Calendar dateOfEventEnd, String id,
- String pathImage, Room room, int status, SwitchCompat isRSVP, EditText rsvpLimit) {
- if (lock) return;
- this.status = status;
- this.room = room;
- String name = Validator.checkName(eventName);
- String desc = Util.trim(eventDescription);
- if (Util.isEmpty(name) || !Validator.checkTimePeriodOfEvent(eventStart, eventEnd, dateOfEventStart, dateOfEventEnd) || !Validator.checkDesc(eventDescription))
- return;
- String fromPeriod = Util.convertTimeFromMillis(dateOfEventStart.getTimeInMillis(), Constants.TimeFormat.SERVER_FORMAT_24_HOURS, "UTC");
- String toPeriod = Util.convertTimeFromMillis(dateOfEventEnd.getTimeInMillis(), Constants.TimeFormat.SERVER_FORMAT_24_HOURS, "UTC");
- String publishAt = Util.convertTimeFromMillis(new Date().getTime(), Constants.TimeFormat.SERVER_FORMAT_WITHOUT_TIME, "UTC");
- ItemCommon newEvent = new ItemCommon(name, desc, publishAt, getImagePath(pathImage), null, String.valueOf(room.getId()), fromPeriod, toPeriod,
- !isPublic.isChecked(), null, id, isRSVP.isChecked(), Util.setNullIf(rsvpLimit.getEditableText().toString().equals("") ? "0" : rsvpLimit.getEditableText().toString(), isRSVP.isChecked()));
- lock = true;
- showProgressBar(true);
- apiManager.editEvent(ctx, newEvent, id, this);
- }
- private String getImagePath(String pathImage) {
- return event.getPathImage() != null ? event.getPathImage() : pathImage;
- }
- @Override
- public void itemImage(ImagePic data) {
- lock = false;
- showProgressBar(false);
- if (Util.isEmpty(data.getPath())) {
- event.setImage("");
- bind(event);
- }
- event.setPathImage(data.getPath());
- }
- @Override
- public void deleteImage() {
- if (Util.isEmpty(event.getImage())) return;
- ItemCommon newEvent = new ItemCommon(event.getName());
- newEvent.setImage("");
- lock = true;
- showProgressBar(true);
- apiManager.addEvent(ctx, newEvent, null, this);
- }
- @Override
- public void bind(ItemCommon event) {
- showProgressBar(false);
- lock = false;
- if (event == null) return;
- DialogUtil dialogUtil = new DialogUtil();
- dialogUtil.setContext(ctx);
- if (room.getNeedApproval() == 1 && status == 0 && Util.isTimeOfEventLessThenHoursReserved(event, room)) {
- dialogUtil.showPrivate(ctx.getString(R.string.will_be_published_after_room_reserv), dialogInterface -> view.update(event));
- } else {
- dialogUtil.showInfo(ctx.getString(R.string.event_has_been_published), false, dialogInterface -> view.update(event));
- }
- }
- private void showProgressBar(boolean show) {
- if (progressBar != null)
- progressBar.setVisibility(show ? View.VISIBLE : View.GONE);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement