Ejemplo n.º 1
0
 /**
  * Create User while creating ticket
  * @param type $emailadd
  * @param type $username
  * @param type $subject
  * @param type $body
  * @param type $phone
  * @param type $helptopic
  * @param type $sla
  * @param type $priority
  * @param type $system
  * @return type bool
  */
 public function create_user($emailadd, $username, $subject, $body, $phone, $helptopic, $sla, $priority, $source, $headers, $dept, $assignto, $from_data)
 {
     // define global variables
     // dd($source);
     // dd($emailadd);
     $email;
     $username;
     // check emails
     $ticket_creator = $username;
     $checkemail = $this->check_email($emailadd);
     $company = $this->company();
     if ($checkemail == false) {
         // Generate password
         $password = $this->generateRandomString();
         // create user
         $user = new User();
         if ($username == null) {
             $username = $emailadd;
         }
         $user->user_name = $username;
         $user->email = $emailadd;
         $user->password = Hash::make($password);
         $user->phone_number = $phone;
         $user->role = "user";
         $user->active = "1";
         // mail user his/her password
         \Event::fire(new \App\Events\ClientTicketFormPost($from_data, $emailadd, $source));
         if ($user->save()) {
             $user_id = $user->id;
             // Event fire
             \Event::fire(new \App\Events\ReadMailEvent($user_id, $password));
             if (Mail::send('emails.pass', ['password' => $password, 'name' => $username, 'from' => $company, 'emailadd' => $emailadd], function ($message) use($emailadd, $username, $company) {
                 $message->to($emailadd, $username)->subject('Welcome to ' . $company . ' helpdesk');
             })) {
                 // need to do something here....
             }
         }
     } else {
         $username = $checkemail->username;
         $user_id = $checkemail->id;
     }
     $ticket_number = $this->check_ticket($user_id, $subject, $body, $helptopic, $sla, $priority, $source, $headers, $dept, $assignto, $from_data);
     $ticket_number2 = $ticket_number[0];
     $ticketdata = Tickets::where('ticket_number', '=', $ticket_number2)->first();
     $threaddata = Ticket_Thread::where('ticket_id', '=', $ticketdata->id)->first();
     // dd($threaddata);
     $is_reply = $ticket_number[1];
     $system = $this->system();
     $updated_subject = $threaddata->title . '[#' . $ticket_number2 . ']';
     if ($ticket_number2) {
         // send ticket create details to user
         if ($is_reply == 0) {
             $mail = "Admin_mail";
             if (Auth::user()) {
                 $sign = Auth::user()->agent_sign;
             } else {
                 $sign = $company;
             }
             if ($source == 3) {
                 Mail::send('emails.Ticket_Create', ['sign' => $sign, 'content' => $body, 'name' => $username, 'ticket_number' => $ticket_number2, 'system' => $system], function ($message) use($emailadd, $username, $ticket_number2, $updated_subject) {
                     $message->to($emailadd, $username)->subject($updated_subject);
                 });
             } else {
                 $body2 = null;
                 Mail::send('emails.Ticket_Create', ['sign' => $sign, 'content' => $body2, 'name' => $username, 'ticket_number' => $ticket_number2, 'system' => $system], function ($message) use($emailadd, $username, $ticket_number2, $updated_subject) {
                     $message->to($emailadd, $username)->subject($updated_subject);
                 });
             }
         } else {
             $mail = "email_reply";
         }
         if (Alert::first()->ticket_status == 1 || Alert::first()->ticket_admin_email == 1) {
             // send email to admin
             $admins = User::where('role', '=', 'admin')->get();
             // $ticket_creator = $user->user_name;
             foreach ($admins as $admin) {
                 $admin_email = $admin->email;
                 $admin_user = $admin->first_name;
                 Mail::send('emails.' . $mail, ['agent' => $admin_user, 'content' => $body, 'ticket_number' => $ticket_number2, 'from' => $company, 'email' => $emailadd, 'name' => $ticket_creator, 'system' => $system], function ($message) use($admin_email, $admin_user, $ticket_number2, $updated_subject) {
                     $message->to($admin_email, $admin_user)->subject($updated_subject);
                 });
             }
         }
         if ($is_reply == 0) {
             if (Alert::first()->ticket_status == 1 || Alert::first()->ticket_department_member == 1) {
                 // send email to agents
                 $agents = User::where('role', '=', 'agent')->get();
                 // dd($agents);
                 foreach ($agents as $agent) {
                     $department_data = Department::where('id', '=', $ticketdata->dept_id)->first();
                     if ($department_data->name == $agent->primary_dpt) {
                         $agent_email = $agent->email;
                         $agent_user = $agent->first_name;
                         Mail::send('emails.' . $mail, ['agent' => $agent_user, 'content' => $body, 'ticket_number' => $ticket_number2, 'from' => $company, 'email' => $emailadd, 'name' => $ticket_creator, 'system' => $system], function ($message) use($agent_email, $agent_user, $ticket_number2, $updated_subject) {
                             $message->to($agent_email, $agent_user)->subject($updated_subject);
                         });
                     }
                 }
             }
         }
         if ($ticketdata->assigned_to) {
             $assigned_to = User::where('id', '=', $ticketdata->assigned_to)->first();
             $agent_email = $assigned_to->email;
             $agent_user = $assigned_to->first_name;
             Mail::send('emails.' . $mail, ['agent' => $assigned_to->user_name, 'content' => $body, 'ticket_number' => $ticket_number2, 'from' => $company, 'email' => $assigned_to->email, 'name' => $ticket_creator, 'system' => $system], function ($message) use($agent_email, $agent_user, $ticket_number2, $updated_subject) {
                 $message->to($agent_email, $agent_user)->subject($updated_subject);
             });
         }
         return ['0' => $ticket_number2, '1' => true];
     }
 }
Ejemplo n.º 2
0
 /**
  * function to assign ticket
  * @param type $id
  * @return type bool
  */
 public function assign($id)
 {
     $UserEmail = Input::get('user');
     // $UserEmail = '*****@*****.**';
     $user = User::where('email', '=', $UserEmail)->first();
     $user_id = $user->id;
     $ticket = Tickets::where('id', '=', $id)->first();
     $ticket_number = $ticket->ticket_number;
     $ticket->assigned_to = $user_id;
     $ticket->save();
     $ticket_thread = Ticket_Thread::where('ticket_id', '=', $id)->first();
     $ticket_subject = $ticket_thread->title;
     $thread = new Ticket_Thread();
     $thread->ticket_id = $ticket->id;
     $thread->user_id = Auth::user()->id;
     $thread->is_internal = 1;
     $thread->body = "This Ticket has been assigned to " . $user->first_name . " " . $user->last_name;
     $thread->save();
     $company = $this->company();
     $system = $this->system();
     $agent = $user->first_name;
     $agent_email = $user->email;
     $master = Auth::user()->first_name . " " . Auth::user()->last_name;
     if (Alert::first()->internal_status == 1 || Alert::first()->internal_assigned_agent == 1) {
         // ticket assigned send mail
         Mail::send('emails.Ticket_assign', ['agent' => $agent, 'ticket_number' => $ticket_number, 'from' => $company, 'master' => $master, 'system' => $system], function ($message) use($agent_email, $agent, $ticket_number, $ticket_subject) {
             $message->to($agent_email, $agent)->subject($ticket_subject . '[#' . $ticket_number . ']');
         });
     }
     return 1;
 }