/** * Show the form for creating a new lead * * @return \Illuminate\Http\Response */ public function create() { $business_lines = BusinessLine::all(); $lead_sources = LeadSource::all(); $lead_statuses = LeadStatus::all(); $kinds = Kind::all(); return view('leads.create', compact('business_lines', 'lead_sources', 'lead_statuses', 'kinds')); }
/** * Remove the lead source from storage and release the number * * @param int $id * @return Response */ public function destroy($id) { $leadSourceToDelete = LeadSource::find($id); $phoneToDelete = $this->_twilioClient->incomingPhoneNumbers->read(["phoneNumber" => $leadSourceToDelete->number]); if ($phoneToDelete) { $phoneToDelete[0]->delete(); } $leadSourceToDelete->delete(); return redirect()->route('dashboard'); }
public function testDestroy() { // Given Session::start(); $this->assertCount(0, LeadSource::all()); $newLeadSource = new LeadSource(['number' => '+136428733', 'description' => 'Some billboard somewhere', 'forwarding_number' => '+13947283']); $newLeadSource->save(); $this->assertCount(1, LeadSource::all()); $mockNumber = Mockery::mock(); $mockNumber->sid = 'sup3runiq3s1d'; $mockTwilioClient = Mockery::mock(Client::class); $mockPhoneToDelete = Mockery::mock(IncomingPhoneNumberInstance::class); $mockPhoneToDelete->shouldReceive("delete")->once(); $mockTwilioClient->incomingPhoneNumbers = Mockery::mock(IncomingPhoneNumberList::class); $mockTwilioClient->incomingPhoneNumbers->shouldReceive('read')->withAnyArgs()->once()->andReturn([0 => $mockPhoneToDelete]); App::instance(Client::class, $mockTwilioClient); // When $response = $this->call('DELETE', route('lead_source.destroy', [$newLeadSource]), ['_token' => Session::token()]); // Then $this->assertCount(0, LeadSource::all()); }
/** * Endpoint which store a new lead with its lead source and forward the call * * @param Request $request Input data * @return Response Twiml to redirect call to the forwarding number */ public function store(Request $request) { $leadSource = LeadSource::where(['number' => $request->input('To')])->first(); $lead = new Lead(); $lead->leadSource()->associate($leadSource->id); $lead->city = $this->_normalizeName($request->input('FromCity')); $lead->state = $this->_normalizeName($request->input('FromState')); $lead->caller_number = $request->input('From'); $lead->caller_name = $request->input('CallerName'); $lead->call_sid = $request->input('CallSid'); $lead->save(); $forwardMessage = new Twiml(); $forwardMessage->dial($leadSource->forwarding_number); return response($forwardMessage, 201)->header('Content-Type', 'application/xml'); }
public function testSummaries() { // Given $fakeNumberOne = '+1153614723'; $fakeNumberTwo = '+1153619723'; $leadSourceOne = new LeadSource(['number' => '+1153614723', 'description' => 'Downtown south billboard', 'forwarding_number' => '+155005501']); $leadSourceTwo = new LeadSource(['number' => '+1153619723', 'description' => 'Downtown north billboard', 'forwarding_number' => '+155005502']); $leadSourceOne->save(); $leadSourceTwo->save(); $leadOne = new Lead(['caller_number' => '+148975933', 'city' => 'Some city', 'state' => 'Some state', 'caller_name' => 'John Doe', 'call_sid' => 'sup3runiq3']); $leadTwo = new Lead(['caller_number' => '+149824734', 'city' => 'Some other city', 'state' => 'Some state', 'caller_name' => 'John Doe', 'call_sid' => 'sup3runiq3']); $leadOne->leadSource()->associate($leadSourceOne->id); $leadOne->save(); $leadTwo->leadSource()->associate($leadSourceTwo->id); $leadTwo->save(); // When $responseByCity = $this->call('GET', route('lead.summary_by_city')); $responseByLeadSource = $this->call('GET', route('lead.summary_by_lead_source')); // Then $responseContentOne = json_decode($responseByCity->getContent(), true); $responseContentTwo = json_decode($responseByLeadSource->getContent(), true); $this->assertEquals([["lead_count" => 1, "city" => "Some other city"], ["lead_count" => 1, "city" => "Some city"]], $responseContentOne); $this->assertEquals([["lead_count" => 1, "description" => "Downtown south billboard", "number" => '+1153614723'], ["lead_count" => 1, "description" => "Downtown north billboard", "number" => '+1153619723']], $responseContentTwo); }