Exemplo n.º 1
0
 public function postSendMessage(Request $request, $property_id = NULL)
 {
     $rules = ['message' => 'required'];
     $this->validate($request, $rules);
     $property = Property::find($property_id);
     $property->load('agentList');
     $user = Auth::user();
     if ($property->agentList) {
         $agent = $property->agentList;
     } else {
         $agent = ProjectHelper::getDefaultAgent();
     }
     $conversation = $user->getPropertyConversation($property);
     if ($conversation) {
         $agent = $conversation->recipient;
     } else {
         $conversation = $user->createPropertyConversation($property, $agent);
     }
     $message = new Message(['message' => $request->input('message')]);
     $message->sender()->associate($user);
     if ($agent) {
         $message->recipient()->associate($agent);
     }
     $message->referenced()->associate($property);
     $message->parentMessage()->associate($conversation);
     $message->save();
     if ($request->ajax()) {
         $return = ['message' => ['id' => $message->id, 'text' => $message->message]];
         return response()->json($return);
     }
     return redirect()->back()->with('messages', [trans('property.inbox.sent_message')]);
 }
Exemplo n.º 2
0
 public function postScheduleViewing(Request $request, $id)
 {
     $user = Auth::user();
     $property = Property::findOrFail($id);
     $property->load('agentList');
     $allowedTime = array_keys(Property::getViewingTimeLabel());
     $rules = ['viewing_date' => 'required|date_format:Y-m-d', 'viewing_time' => ['required', 'in:' . implode(',', $allowedTime)]];
     $this->validate($request, $rules);
     $viewingTime = str_replace('_', ':', $request->input('viewing_time'));
     $viewingFrom = \DateTime::createFromFormat('Y-m-d H:i', $request->input('viewing_date') . ' ' . $viewingTime);
     $viewingTo = clone $viewingFrom;
     $viewingTo->modify('+2 hours');
     $viewingSchedule = ViewingSchedule::where('user_id', $user->id)->where('property_id', $property->id)->first();
     if ($property->agentList) {
         $agent = $property->agentList;
     } else {
         $agent = ProjectHelper::getDefaultAgent();
     }
     if (!$viewingSchedule) {
         $viewingSchedule = new ViewingSchedule();
         $viewingSchedule->user()->associate($user);
         $viewingSchedule->property()->associate($property);
         if ($agent) {
             $viewingSchedule->agent()->associate($agent);
         }
         $reschedule = FALSE;
     } else {
         $reschedule = TRUE;
     }
     $viewingSchedule->fill(['viewing_from' => $viewingFrom->format('Y-m-d H:i:s'), 'viewing_until' => $viewingTo->format('Y-m-d H:i:s')]);
     $viewingSchedule->status = ViewingSchedule::STATUS_PENDING;
     $viewingSchedule->save();
     if ($reschedule) {
         Event::fire(new ViewingScheduleEvent($viewingSchedule, 'reschedule'));
     } else {
         Event::fire(new ViewingScheduleEvent($viewingSchedule, 'new'));
     }
     $conversation = $user->getPropertyConversation($property);
     if (!$conversation) {
         $user->createPropertyConversation($property, $agent);
     }
     if ($reschedule) {
         $message = trans('property.schedule_viewing.reschedule_success_message');
     } else {
         $message = trans('property.schedule_viewing.success_message');
     }
     return redirect()->back()->with('messages', [$message]);
 }