function send_ticket_notification($email, $subject, $text, $ticket_id)
{
    $instance =& get_instance();
    $instance->load->helper('file');
    $instance->load->library('parser');
    $data["core_settings"] = Setting::first();
    $ticket = Ticket::find_by_id($ticket_id);
    $ticket_link = base_url() . 'tickets/view/' . $ticket->id;
    $instance->email->from($data["core_settings"]->email, $data["core_settings"]->company);
    $instance->email->reply_to($data["core_settings"]->ticket_email);
    $instance->email->to($email);
    $instance->email->subject($subject);
    //Set parse values
    $parse_data = array('company' => $data["core_settings"]->company, 'link' => base_url(), 'ticket_link' => $ticket_link, 'ticket_number' => $ticket->reference, 'ticket_created_date' => date($data["core_settings"]->date_format . '  ' . $data["core_settings"]->date_time_format, $ticket->created), 'ticket_status' => $instance->lang->line('application_ticket_status_' . $ticket->status), 'logo' => '<img src="' . base_url() . '' . $data["core_settings"]->logo . '" alt="' . $data["core_settings"]->company . '"/>', 'invoice_logo' => '<img src="' . base_url() . '' . $data["core_settings"]->invoice_logo . '" alt="' . $data["core_settings"]->company . '"/>', 'message' => $text);
    $email_invoice = read_file('./application/views/' . $data["core_settings"]->template . '/templates/email_ticket_notification.html');
    $message = $instance->parser->parse_string($email_invoice, $parse_data);
    $instance->email->message($message);
    $instance->email->send();
}
Beispiel #2
0
 function article($id = FALSE, $condition = FALSE, $article_id = FALSE)
 {
     $this->view_data['submenu'] = array($this->lang->line('application_back') => 'ctickets', $this->lang->line('application_overview') => 'ctickets/view/' . $id);
     switch ($condition) {
         case 'add':
             $this->content_view = 'tickets/client_views/_note';
             if ($_POST) {
                 $config['upload_path'] = './files/media/';
                 $config['encrypt_name'] = TRUE;
                 $config['allowed_types'] = '*';
                 $this->load->library('upload', $config);
                 $this->load->helper('notification');
                 unset($_POST['userfile']);
                 unset($_POST['file-name']);
                 unset($_POST['send']);
                 unset($_POST['_wysihtml5_mode']);
                 $ticket = Ticket::find_by_id($id);
                 $ticket->updated = "1";
                 $ticket->save();
                 if ($ticket->company_id != $this->client->company->id || $ticket->client_id != $this->client->id) {
                     redirect('ctickets');
                 }
                 send_ticket_notification($ticket->user->email, '[Ticket#' . $ticket->reference . '] - ' . $_POST['subject'], $_POST['message'], $ticket->id);
                 $_POST['internal'] = "0";
                 unset($_POST['notify']);
                 $_POST['subject'] = htmlspecialchars($_POST['subject']);
                 $_POST['datetime'] = time();
                 $_POST['ticket_id'] = $id;
                 $_POST['from'] = $this->client->firstname . " " . $this->client->lastname . ' - ' . $this->client->email;
                 $_POST['reply_to'] = $this->client->email;
                 $article = TicketHasArticle::create($_POST);
                 if (!$this->upload->do_upload()) {
                     $error = $this->upload->display_errors('', ' ');
                     $this->session->set_flashdata('message', 'error:' . $error);
                 } else {
                     $data = array('upload_data' => $this->upload->data());
                     $attributes = array('article_id' => $article->id, 'filename' => $data['upload_data']['orig_name'], 'savename' => $data['upload_data']['file_name']);
                     $attachment = ArticleHasAttachment::create($attributes);
                 }
                 if (!$article) {
                     $this->session->set_flashdata('message', 'error:' . $this->lang->line('messages_save_article_error'));
                 } else {
                     $this->session->set_flashdata('message', 'success:' . $this->lang->line('messages_save_article_success'));
                 }
                 redirect('ctickets/view/' . $id);
             } else {
                 $this->theme_view = 'modal';
                 $this->view_data['ticket'] = Ticket::find($id);
                 $this->view_data['title'] = $this->lang->line('application_add_note');
                 $this->view_data['form_action'] = 'ctickets/article/' . $id . '/add';
                 $this->content_view = 'tickets/client_views/_note';
             }
             break;
         default:
             redirect('ctickets');
             break;
     }
 }
 /**
  * method to close a ticket
  * 
  */
 public function closeTicket()
 {
     if (isset($_POST['id']) && !empty($_POST["id"])) {
         $partTicket = Ticket::find_by_id($_POST["id"]);
         $partTicket->status = "Closed";
         $theUser = Employee::find_by_id($_SESSION['emp_ident']);
         $cemail = !empty($_POST['cemail']) ? explode(",", $_POST['cemail']) : "";
         // print_r($partTicket);
         array_push($cemail, $partTicket->contact_email, $theUser->emp_email);
         $client = Client::find_by_id($partTicket->client_id);
         array_push($cemail, $client->email);
         $partTicket->datemodified = date("Y-m-d H:i:s");
         $msg = "Your Complaint ticket status has been closed<br />";
         $subject = "Robert Johnson Holdings(Technical Support) Ticket #'" . $partTicket->id . "' Close";
         //print_r($cemail);
         //mail("*****@*****.**","Robert Johnson Holdings, Technical Support" , "all good");
         if ($partTicket->update()) {
             //	$this->sendMail("Customer",$subject ,$msg,$cemail);
             return true;
         } else {
             return false;
         }
     }
 }
Beispiel #4
0
 function view($id = FALSE)
 {
     $this->view_data['submenu'] = array();
     $this->content_view = 'tickets/view';
     $this->view_data['ticket'] = Ticket::find_by_id($id);
     if ($this->view_data['ticket']->status == "new") {
         $this->view_data['ticket']->status = "open";
         $this->view_data['ticket']->save();
     }
     if (isset($this->view_data['ticket']->user->id)) {
         $ticket_id = $this->view_data['ticket']->user->id;
     } else {
         $ticket_id = "0";
     }
     if ($this->view_data['ticket']->updated == "1" and $ticket_id == $this->user->id) {
         $this->view_data['ticket']->updated = "0";
         $this->view_data['ticket']->save();
     }
     $this->view_data['form_action'] = 'tickets/article/' . $id . '/add';
     if (!$this->view_data['ticket']) {
         redirect('tickets');
     }
 }
    public function sendMailCloseTicket($id)
    {
        $ticket = Ticket::find_by_id($id);
        $ccemails = Ccemail::find_by_ticket($id);
        $client = Client::find_by_id($_SESSION['client_ident']);
        $to = '*****@*****.**';
        $subject = 'RE: Ticket Number: #' . str_pad($ticket->id, 8, "0", STR_PAD_LEFT) . " " . $ticket->subject;
        $headers = "From: " . $client->name . "<" . $client->email . ">\r\n";
        $headers .= "Reply-To: " . $ticket->contact_email . "\r\n";
        if ($ccemails) {
            $copyaddy = array();
            $cc = "";
            foreach ($ccemails as $ccemail) {
                array_push($copyaddy, $ccemail->email);
            }
            for ($i = 0; $i < count($copyaddy); $i++) {
                if ($i == count($copyaddy) - 1) {
                    $cc .= $copyaddy[$i];
                } else {
                    $cc .= $copyaddy[$i] . ", ";
                }
            }
            $to .= ", " . $cc;
        }
        $headers .= "MIME-Version: 1.0\r\n";
        $headers .= "Content-Type: text/html; charset=ISO-8859-1\r\n";
        $message = '
			<html><body>
			<h1>Robert Johnson Holdings Limited</h1>

			<h2>Ticket Number #' . str_pad($ticket->id, 8, "0", STR_PAD_LEFT) . '</h2>
				<table width="100%" border="0">
				  <tr>
					<th scope="row" width="30%">Client</th>
					<td width="70%">' . $client->name . '</td>
				  </tr>
				  <tr>
					<th scope="row">Contact Person</th>
					<td>' . $ticket->contact_name . '</td>
				  </tr>
				  <tr>
					<th scope="row">Contact Phone Number</th>
					<td>' . $ticket->contact_phone . '</td>
				  </tr>
				  <tr>
					<th scope="row">Contact Email</th>
					<td>' . $ticket->contact_email . '</td>
				  </tr>';
        if ($ccemails) {
            $message .= '<tr>
							<th scope="row">Copied Emails</th>
							<td>' . $cc . '</td>
						  </tr>
						  <tr>';
        }
        $message .= '<th scope="row">Department</th>
					<td>' . $ticket->department . '</td>
				  </tr>
				  <tr>
					<th scope="row">Ticket Status</th>
					<td>' . $ticket->status . '</td>
				  </tr>
				  <tr>
					<th scope="row">Priority Level</th>
					<td>' . $ticket->priority . '</td>
				  </tr>
				  <tr>
					<th scope="row">Related Product/Service</th>
					<td>' . $ticket->prod_name . ' at ' . $ticket->location . '</td>
				  </tr>
				  <tr>
					<th scope="row">Subject</th>
					<td>' . $ticket->subject . '</td>
				  </tr>
				  <tr>
					<th scope="row">Issue/Complaint/Suggestion</th>
					<td>Ticket has been closed.</td>
				  </tr>
				</table>
			</body></html>';
        if (mail($to, $subject, $message, $headers)) {
            return true;
        } else {
            return false;
        }
    }
Beispiel #6
0
 function bulk($action)
 {
     $this->load->helper('notification');
     if ($_POST) {
         if (empty($_POST['list'])) {
             redirect('tickets');
         }
         $list = explode(",", $_POST['list']);
         switch ($action) {
             case 'close':
                 $attr = array('status' => "closed");
                 $email_message = $this->lang->line('messages_bulk_ticket_closed');
                 $success_message = $this->lang->line('messages_bulk_ticket_closed_success');
                 break;
             default:
                 redirect('tickets');
                 break;
         }
         foreach ($list as $value) {
             $ticket = Ticket::find_by_id($value);
             $ticket->update_attributes($attr);
             send_ticket_notification($ticket->user->email, '[Ticket#' . $ticket->reference . '] - ' . $ticket->subject, $email_message, $ticket->id);
             if (!$ticket) {
                 $this->session->set_flashdata('message', 'error:' . $this->lang->line('messages_save_ticket_error'));
             } else {
                 $this->session->set_flashdata('message', 'success:' . $success_message);
             }
         }
         redirect('tickets');
         /*
         if(isset($ticket->client->email)){ $email = $ticket->client->email; } else {$emailex = explode(' - ', $ticket->from); $email = $emailex[1]; }
         if(isset($_POST['notify'])){
         	
         send_ticket_notification($email, '[Ticket#'.$ticket->reference.'] - '.$ticket->subject, $_POST['message'], $ticket->id);
         }
         send_ticket_notification($ticket->user->email, '[Ticket#'.$ticket->reference.'] - '.$ticket->subject, $_POST['message'], $ticket->id);
         $_POST['internal'] = "0";
         unset($_POST['notify']);
         $_POST['subject'] = htmlspecialchars($_POST['subject']);
         $_POST['datetime'] = time();
         $_POST['from'] = $this->user->firstname." ".$this->user->lastname.' - '.$this->user->email;
         $_POST['reply_to'] = $this->user->email;
         $_POST['ticket_id'] = $id;
         $_POST['to'] = $email;
         unset($_POST['client_id']);
         $article = TicketHasArticle::create($_POST);
                		if(!$ticket){$this->session->set_flashdata('message', 'error:'.$this->lang->line('messages_save_ticket_error'));}
                		else{$this->session->set_flashdata('message', 'success:'.$this->lang->line('messages_ticket_close_success'));}
         redirect('tickets');
         */
     } else {
         $this->view_data['ticket'] = Ticket::find($id);
         $this->theme_view = 'modal';
         $this->view_data['title'] = $this->lang->line('application_close');
         $this->view_data['form_action'] = 'tickets/close';
         $this->content_view = 'tickets/_close';
     }
 }
 public function createSchedule($id = "")
 {
     if (!empty($_POST['cid']) && !empty($_POST['empid'])) {
         $thisclientproduct = Cproduct::find_by_id((int) preg_replace('#[^0-9]#i', '', $_POST['cid']));
         $empdata = explode("_", $_POST['empid']);
         $thisemployee = Employee::find_by_staff_id($empdata[0]);
         //print_r($thisemployee);
         $thisSchedule = new Schedule();
         $clientTicket = Ticket::find_by_id((int) preg_replace('#[^0-9]#i', '', $id));
         $thisclientproduct = Cproduct::find_by_id((int) preg_replace('#[^0-9]#i', '', $clientTicket->prod_id));
         if ($_POST['mtype'] != "Activation" && ($_POST['Corrective'] || $_POST['Preventive'])) {
             $clientTicket->status = "Admin Reply";
             $clientTicket->datemodified = date("Y-m-d H:i:s");
             $thisSchedule->status = "In Progress";
         } else {
             $clientTicket = Activation::find_by_id((int) preg_replace('#[^0-9]#i', '', $id));
             if ($clientTicket) {
                 $thisclientproduct = Cproduct::find_by_id((int) preg_replace('#[^0-9]#i', '', $clientTicket->prod_id));
                 $clientTicket->status = "In Progress";
                 $clientTicket->updated_at = date("Y-m-d H:i:s");
             }
         }
         $thisSchedule->status = "In Progress";
         $thisSchedule->emp_id = $thisemployee->id;
         $thisSchedule->emp_name = $thisemployee->emp_fname . " " . $thisemployee->emp_lname;
         $thisSchedule->client_id = $thisclientproduct->client_id;
         $thisClient = Client::find_by_id($thisclientproduct->client_id);
         $thisSchedule->prod_id = $thisclientproduct->id;
         $thisSchedule->ticket_id = $id;
         $thisSchedule->prod_name = $thisclientproduct->prod_name;
         // exit;
         /**
          * this is to check if ticket
          * is in existence
          */
         //print_r($theUser);
         global $session;
         //$partTicket                             =   ($id!="") ? Ticket::find_by_id($id) : ""; // get the ticket to get details needed for sending mail
         $theUser = Employee::find_by_id($_SESSION["emp_ident"]);
         // get cse detail to retrieve email
         $thisSchedule->s_date = !empty($_POST['taskdate']) ? $_POST['taskdate'] : date("Y-m-d");
         $cemail = array();
         $cemail = !empty($_POST['cemail']) && isset($_POST['cemail']) ? explode(",", $_POST['cemail']) : array('*****@*****.**');
         array_push($cemail, $thisemployee->emp_email, is_array($clientTicket) ? $clientTicket->contact_email : "", $theUser->emp_email, $thisClient->email);
         array_push($cemail, $clientTicket->contact);
         array_push($cemail, $thisClient->contact_email);
         array_push($cemail, $thisClient->email);
         //print_r($cemail);
         $thisSchedule->issue = $_POST["tissue"];
         $thisSchedule->datecreated = date("Y-m-d H:i:s");
         $thisSchedule->maint_type = $_POST['mtype'];
         $subject = "Maintenance Alert";
         $smsmsg = "Maintenance alert for" . $thisclientproduct->terminal_id . " " . $thisclientproduct->prod_name . "at";
         $smsmsg .= $thisclientproduct->install_location . "," . $thisclientproduct->branch;
         $smsmsg .= "\r\n issue:" . $_POST["tissue"] . "\r\n";
         $msg = "<h3>Maintenance Detail</h3> <hr />";
         $msg .= "<p><strong>Terminal ID: </strong>{$thisclientproduct->terminal_id} </p>";
         $msg .= "<p><strong>Machine: </strong>{$thisclientproduct->prod_name} </p>";
         $msg .= "<p><strong>Client: </strong> {$thisClient->name}</p>";
         $msg .= "<p><strong>Location: </strong>{$thisclientproduct->install_location} {$thisclientproduct->branch} {$thisclientproduct->install_city} </p>";
         $msg .= "<p><strong>Complaint: </strong>" . (!empty($_POST['tissue']) ? $_POST['tissue'] : $clientTicket->issue) . "</p>";
         $msg .= "<br /><br /> <h4>Technician Details</h4> <hr />";
         $msg .= "<p><strong>Name: </strong>" . $thisemployee->emp_fname . " " . $thisemployee->emp_lname . "</p>";
         $msg .= "<p><strong>Email: </strong>" . $thisemployee->emp_email . "</p>";
         $msg .= "<p><strong>Telephone: </strong>" . $thisemployee->emp_phone . "</p>";
         $msg .= "<br /><br /><h4>Scheduled Date</h4> <hr />";
         $msg .= "<p><strong>{$thisSchedule->s_date}</strong></p><br /><br /><br /><br />";
         $newReply = new Ticketreply();
         $newReply->sender_id = $_SESSION["emp_ident"];
         $newReply->ticket_id = $id;
         $newReply->sender_name = $theUser->emp_fname . " " . $theUser->emp_lname;
         $newReply->sender_type = "Admin";
         $newReply->message = $msg;
         $newReply->datecreated = date("Y-m-d H:i:s");
         $newReply->datemodified = date("Y-m-d H:i:s");
         //$newReply->create();
         /**
          * the transaction log is created
          * to ensure that the product already 
          * has history and cannot be deleted
          */
         $Tlog2 = new Transaction();
         $Tlog2->com_id = $thisclientproduct->main_id;
         $Tlog2->trans_type = "TASK ASSIGNMENT";
         $Tlog2->trans_description = "Corrective Maintenance task assigned to " . $thisemployee->emp_fname . " " . $thisemployee->emp_lname . "";
         $Tlog2->datecreated = date("Y-m-d H:i:s");
         $Tlog2->datemodified = date("Y-m-d H:i:s");
         $Tlog2->user_id = $_SESSION['emp_ident'];
         // print_r($msg);
         if ($newReply->create()) {
             $thisSchedule->create();
             $clientTicket->datemodified = date("Y-m-d H:i:s");
             $clientTicket->update();
             $Tlog2->create();
             //$thisemployee->emp_phone
             sendSms($thisemployee->emp_phone, $smsmsg);
             sendSms($thisClient->contact_phone, $smsmsg);
             sendSms($thisClient->phone, $smsmsg);
             $this->sendMail($thisSchedule->emp_name, $subject, $msg, $cemail);
             return true;
         } else {
             return false;
         }
     }
 }