/** * Function updateContact * * Input names to create customer * * company_041 [company] * name_041 [name] * surname_041 [surname] * birth_date_041 [birthDate] * prefix_041 [prefix] * mobile_041 [mobile] * email_041 [email] * unsubscribe_mobile_041 [subscribeMobile] * unsubscribe_email_041 [subscribeEmail] * * @param \Illuminate\Http\Request $request * @return \Syscover\Comunik\Models\Contact $contact * @throws \Exception */ public static function updateContact(Request $request) { if (!$request->has('id')) { throw new \Exception('You have to indicate a id contact'); } if (!$request->has('country')) { throw new \Exception('You have to define a country field to record a contact'); } Contact::where('id_041', $request->input('id'))->update(['company_041' => $request->has('company') ? $request->input('company') : null, 'name_041' => $request->has('name') ? ucwords(strtolower($request->input('name'))) : null, 'surname_041' => $request->has('surname') ? ucwords(strtolower($request->input('surname'))) : null, 'birth_date_041' => $request->has('birthDate') ? \DateTime::createFromFormat(config('pulsar.datePattern'), $request->input('birthDate'))->getTimestamp() : null, 'birth_date_text_041' => $request->has('birthDate') ? $request->input('birthDate') : null, 'country_id_041' => $request->input('country'), 'prefix_041' => $request->has('prefix') ? $request->input('prefix') : null, 'mobile_041' => $request->has('mobile') ? $request->input('mobile') : null, 'email_041' => $request->has('email') ? strtolower($request->input('email')) : null, 'unsubscribe_mobile_041' => $request->has('subscribeMobile') && $request->input('subscribeMobile') != '1' ? true : false, 'unsubscribe_email_041' => $request->has('subscribeEmail') && $request->input('subscribeEmail') != '1' ? true : false]); $contact = Contact::builder()->find($request->input('id')); if ($contact === null) { throw new \Exception('You have to indicate an id of a existing contact'); } return $contact; }
public function unsubscribeEmail() { $contact = Contact::find(Crypt::decrypt($this->request->input('key'))); Contact::where('id_041', $contact->id_041)->update(['unsubscribe_email_041' => true]); return view('comunik::contact.unsubscribe', ['contact' => $contact, 'unsubscribe' => true]); }
/** * Recursive function * * @param \Syscover\Pulsar\Libraries\ImapServices $imapService * @param \Syscover\Pulsar\Models\EmailAccount $account * @param \Illuminate\Support\Collection $patterns * @param integer $position */ public static function checkBouncedMessagesFromAccount($imapService, $account, $patterns, $position) { $nEmailsToChecck = 25; // Solicitamos los 10 anteriores mensajes a comprobar desde la última posición comnprobada $messages = $imapService->getServer()->getMessages($nEmailsToChecck, $position); $findLastCheckUid = false; foreach ($messages as $key => $message) { // comprobamos si el mensaje coincide con algún patron $response = ComunikLibrary::checkEmailPattern($message, $patterns); if ($response['success']) { if (count($response['contacts']) > 0) { // Obtenemos el primer contacto del email que ha coincidido con el patrón $contact = $response['contacts']->first(); } else { $contact = false; } // Acciones a realizar // 1 = nada // 2 = borrar contacto y mensaje // 3 = unsuscribe y borrar mensaje // 4 = borrar contacto // 5 = ususcribe contacto // 6 = borrar mensaje if ($contact != false && ($response['pattern']->action_049 == 2 || $response['pattern']->action_049 == 4)) { // borrar contacto Contact::where('id_041', $contact->id_041)->delete(); } if ($contact != false && ($response['pattern']->action_049 == 3 || $response['pattern']->action_049 == 5)) { // unsuscribe contacto Contact::where('id_041', $contact->id_041)->update(['unsubscribe_email_041' => true]); } if ($response['pattern']->action_049 == 2 || $response['pattern']->action_049 == 3 || $response['pattern']->action_049 == 6) { // borrar mensaje $message->delete(); // retrasamos medio segundo la ejecución para no saturar el servidor IMAP de peticiones usleep(500000); } } // si es la última interacción if ($key === count($messages) - 1) { // purge all delete messages $imapService->getServer()->expunge(); // actualizamos el último UID comprobado EmailAccount::where('id_013', $account->id_013)->update(['last_check_uid_013' => $message->getUid()]); } } }