Advertisement
Guest User

Untitled

a guest
Feb 19th, 2020
109
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Kotlin 9.85 KB | None | 0 0
  1. package com.attractgroup.elevatelongfellow.di.presenter;
  2.  
  3. import android.app.Activity;
  4. import android.content.ContentValues;
  5. import android.content.Context;
  6. import android.content.Intent;
  7. import android.net.Uri;
  8. import android.provider.MediaStore;
  9. import android.support.v7.widget.AppCompatEditText;
  10. import android.support.v7.widget.SwitchCompat;
  11. import android.view.View;
  12. import android.widget.EditText;
  13. import android.widget.ProgressBar;
  14.  
  15. import com.attractgroup.elevatelongfellow.R;
  16. import com.attractgroup.elevatelongfellow.api.ApiManager;
  17. import com.attractgroup.elevatelongfellow.di.view.CreateRoomEventView;
  18. import com.attractgroup.elevatelongfellow.model.Building;
  19. import com.attractgroup.elevatelongfellow.model.ImagePic;
  20. import com.attractgroup.elevatelongfellow.model.ItemCommon;
  21. import com.attractgroup.elevatelongfellow.model.Room;
  22. import com.attractgroup.elevatelongfellow.model.User;
  23. import com.attractgroup.elevatelongfellow.prefs.PrefsManager;
  24. import com.attractgroup.elevatelongfellow.realm.RealmManager;
  25. import com.attractgroup.elevatelongfellow.utils.Constants;
  26. import com.attractgroup.elevatelongfellow.utils.DialogUtil;
  27. import com.attractgroup.elevatelongfellow.utils.Util;
  28. import com.attractgroup.elevatelongfellow.utils.Validator;
  29. import com.attractgroup.elevatelongfellow.utils.ViewForResult;
  30.  
  31. import java.io.File;
  32. import java.util.ArrayList;
  33. import java.util.Calendar;
  34. import java.util.Date;
  35.  
  36. import javax.inject.Inject;
  37.  
  38. import okhttp3.MediaType;
  39. import okhttp3.MultipartBody;
  40. import okhttp3.RequestBody;
  41.  
  42. /**
  43.  * Created by Nakedman on 08.12.17.
  44.  */
  45.  
  46. public class CreateRoomEventPresenter implements ICreateRoomEventPresenter {
  47.  
  48.     private ApiManager apiManager;
  49.     private ItemCommon event;
  50.     private RealmManager realmManager;
  51.     private PrefsManager prefsManager;
  52.     private CreateRoomEventView view;
  53.     private Uri uri;
  54.     private boolean lock = false;
  55.     private ProgressBar progressBar;
  56.     private Context ctx;
  57.     private int status;
  58.     private Room room;
  59.     private int validPeriod;
  60.  
  61.     @Inject
  62.     public CreateRoomEventPresenter(ApiManager apiManager, RealmManager realmManager, PrefsManager prefsManager) {
  63.         this.apiManager = apiManager;
  64.         this.realmManager = realmManager;
  65.         this.prefsManager = prefsManager;
  66.  
  67.         event = new ItemCommon();
  68.     }
  69.  
  70.     @Override
  71.     public void onAttach(CreateRoomEventView v, Context ctx) {
  72.         this.view = v;
  73.         this.ctx = ctx;
  74.     }
  75.  
  76. //    @Override
  77. //    public void showHelpPopup(Room room) {
  78. //        HelpFragment fragment = new HelpFragment();
  79. //        Bundle bundle = new Bundle();
  80. //        bundle.putString("text", room.getHelpInfo());
  81. //        fragment.setArguments(bundle);
  82. //        ((BaseActivity) ctx).changeFragment(fragment, "wow1", false);
  83. //    }
  84.  
  85.     @Override
  86.     public void getItemImage() {
  87.         uri = ctx.getContentResolver().insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, new ContentValues());
  88.         Util.getImage(ctx, (ViewForResult) view, uri, !Util.isEmpty(event.getImage()));
  89.     }
  90.  
  91.     @Override
  92.     public void bind(ProgressBar progressBar) {
  93.         this.progressBar = progressBar;
  94.     }
  95.  
  96.     @Override
  97.     public void parseResult(int requestCode, int resultCode, Intent data) {
  98.         if (data != null && data.hasExtra(Constants.Extra.REMOVE_IMG) && !Util.isEmpty(event.getImage())) {
  99.             deleteImage();
  100.             return;
  101.         }
  102.  
  103.         if (requestCode == Constants.Request.GET_CONTENT && resultCode == Activity.RESULT_OK)
  104.             parse(data);
  105.     }
  106.  
  107.     private void parse(Intent data) {
  108.         uri = data != null ? data.getData() : uri;
  109.         if (uri == null) {
  110.             new DialogUtil(ctx).showInfo("Device error");
  111.             return;
  112.         }
  113.         String path = Util.getFilePathFromUri(ctx, uri);
  114.         editItem(path);
  115.         view.updateImage(uri);
  116.     }
  117.  
  118.     private void editItem(String path) {
  119.         lock = true;
  120.         showProgressBar(true);
  121.         File file = new File(path);
  122.         RequestBody fileBody = RequestBody.create(MediaType.parse("image/*"), file);
  123.         MultipartBody.Part part = MultipartBody.Part.createFormData("qqfile", file.getName(), fileBody);
  124.         apiManager.addImage(ctx, part, this);
  125.     }
  126.  
  127.     @Override
  128.     public void add(AppCompatEditText eventName, AppCompatEditText eventStart, AppCompatEditText eventEnd,
  129.                     AppCompatEditText eventDescription, SwitchCompat isPublic, ArrayList<Building> buildings,
  130.                     ArrayList<User> users, Calendar dateOfEventStart, Calendar dateOfEventEnd, Room room, SwitchCompat isRSVP,
  131.                     EditText rsvpLimit, String setupRequested) {
  132.         if (lock) return;
  133.         this.room = room;
  134.         String name = Validator.checkName(eventName);
  135.         String desc = Util.trim(eventDescription);
  136.  
  137.         if (Util.isEmpty(name) || !Validator.checkTimePeriodOfEvent(eventStart, eventEnd, dateOfEventStart, dateOfEventEnd) || !Validator.checkDesc(eventDescription))
  138.             return;
  139.  
  140.         String fromPeriod = Util.convertTimeFromMillis(dateOfEventStart.getTimeInMillis(), Constants.TimeFormat.SERVER_FORMAT_24_HOURS, "UTC");
  141.         String toPeriod = Util.convertTimeFromMillis(dateOfEventEnd.getTimeInMillis(), Constants.TimeFormat.SERVER_FORMAT_24_HOURS, "UTC");
  142.         String publishAt = Util.convertTimeFromMillis(new Date().getTime(), Constants.TimeFormat.SERVER_FORMAT_WITHOUT_TIME, "UTC");
  143.  
  144.         ArrayList<String> buildId = null;
  145.         if (buildings != null) {
  146.             buildId = new ArrayList<>();
  147.             for (Building build : buildings) {
  148.                 buildId.add(build.getId());
  149.             }
  150.         }
  151.  
  152.         ArrayList<String> userId = null;
  153.         if (users != null) {
  154.             userId = new ArrayList<>();
  155.             for (User user : users) {
  156.                 userId.add(user.getId());
  157.             }
  158.         }
  159.  
  160.  
  161.         ItemCommon newEvent = new ItemCommon(name, desc, publishAt, event.getPathImage(), buildId,
  162.                 String.valueOf(room.getId()), fromPeriod, toPeriod, !isPublic.isChecked(), userId, isRSVP.isChecked(),
  163.                 Util.setNullIf(rsvpLimit.getEditableText().toString().equals("") ? "0"
  164.                         : rsvpLimit.getEditableText().toString(), isRSVP.isChecked()), setupRequested);
  165.         lock = true;
  166.         showProgressBar(true);
  167.         apiManager.addEvent(ctx, newEvent, null, this);
  168.     }
  169.  
  170.     public String getUserName() {
  171.         return realmManager.getUser(prefsManager.getUserId()).getName();
  172.     }
  173.  
  174.     public User getMyUser() {
  175.         return realmManager.getUser(prefsManager.getUserId());
  176.     }
  177.  
  178.     @Override
  179.     public void edit(AppCompatEditText eventName, AppCompatEditText eventStart, AppCompatEditText eventEnd,
  180.                      AppCompatEditText eventDescription, SwitchCompat isPublic, ArrayList<Building> buildings,
  181.                      ArrayList<User> users, Calendar dateOfEventStart, Calendar dateOfEventEnd, String id,
  182.                      String pathImage, Room room, int status, SwitchCompat isRSVP, EditText rsvpLimit) {
  183.         if (lock) return;
  184.         this.status = status;
  185.         this.room = room;
  186.         String name = Validator.checkName(eventName);
  187.         String desc = Util.trim(eventDescription);
  188.  
  189.         if (Util.isEmpty(name) || !Validator.checkTimePeriodOfEvent(eventStart, eventEnd, dateOfEventStart, dateOfEventEnd) || !Validator.checkDesc(eventDescription))
  190.             return;
  191.  
  192.         String fromPeriod = Util.convertTimeFromMillis(dateOfEventStart.getTimeInMillis(), Constants.TimeFormat.SERVER_FORMAT_24_HOURS, "UTC");
  193.         String toPeriod = Util.convertTimeFromMillis(dateOfEventEnd.getTimeInMillis(), Constants.TimeFormat.SERVER_FORMAT_24_HOURS, "UTC");
  194.         String publishAt = Util.convertTimeFromMillis(new Date().getTime(), Constants.TimeFormat.SERVER_FORMAT_WITHOUT_TIME, "UTC");
  195.  
  196.         ItemCommon newEvent = new ItemCommon(name, desc, publishAt, getImagePath(pathImage), null, String.valueOf(room.getId()), fromPeriod, toPeriod,
  197.                 !isPublic.isChecked(), null, id, isRSVP.isChecked(), Util.setNullIf(rsvpLimit.getEditableText().toString().equals("") ? "0" : rsvpLimit.getEditableText().toString(), isRSVP.isChecked()));
  198.         lock = true;
  199.         showProgressBar(true);
  200.         apiManager.editEvent(ctx, newEvent, id, this);
  201.     }
  202.  
  203.  
  204.     private String getImagePath(String pathImage) {
  205.         return event.getPathImage() != null ? event.getPathImage() : pathImage;
  206.     }
  207.  
  208.     @Override
  209.     public void itemImage(ImagePic data) {
  210.         lock = false;
  211.         showProgressBar(false);
  212.         if (Util.isEmpty(data.getPath())) {
  213.             event.setImage("");
  214.             bind(event);
  215.         }
  216.         event.setPathImage(data.getPath());
  217.     }
  218.  
  219.     @Override
  220.     public void deleteImage() {
  221.         if (Util.isEmpty(event.getImage())) return;
  222.  
  223.         ItemCommon newEvent = new ItemCommon(event.getName());
  224.         newEvent.setImage("");
  225.  
  226.         lock = true;
  227.         showProgressBar(true);
  228.         apiManager.addEvent(ctx, newEvent, null, this);
  229.     }
  230.  
  231.     @Override
  232.     public void bind(ItemCommon event) {
  233.         showProgressBar(false);
  234.         lock = false;
  235.         if (event == null) return;
  236.         DialogUtil dialogUtil = new DialogUtil();
  237.         dialogUtil.setContext(ctx);
  238.         if (room.getNeedApproval() == 1 && status == 0 && Util.isTimeOfEventLessThenHoursReserved(event, room)) {
  239.             dialogUtil.showPrivate(ctx.getString(R.string.will_be_published_after_room_reserv), dialogInterface -> view.update(event));
  240.         } else {
  241.             dialogUtil.showInfo(ctx.getString(R.string.event_has_been_published), false, dialogInterface -> view.update(event));
  242.  
  243.         }
  244.     }
  245.  
  246.     private void showProgressBar(boolean show) {
  247.         if (progressBar != null)
  248.             progressBar.setVisibility(show ? View.VISIBLE : View.GONE);
  249.     }
  250.  
  251. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement