/**
  * Store a newly created DNS Record of Zone in storage.
  *
  * @param  Zone $zone
  * @param  DnsRequest $request
  * @return Response
  */
 public function storeDns(Zone $zone, DnsRequest $request)
 {
     try {
         $datas = $request->except(['_token']);
         if ('@' === $datas['name']) {
             $datas['name'] = $zone->name;
         } else {
             if (strpos($request->name, '.') !== false) {
                 return back()->withInput()->withErrors([trans('admin.zone.invalid_name')]);
             }
         }
         $cfDns = Cloudflare::createDnsRecord($zone, $datas);
         $dnsRecord = $request->all();
         $dnsRecord['name'] = $datas['name'];
         $dnsRecord['cf_id'] = $cfDns->id;
         $dnsRecord['zone_id'] = $zone->id;
         $this->dnsRepository->create($dnsRecord);
         // add to blacklist domain
         $isBlacklisted = $this->blacklistRepository->findOneByNameAndZone($datas['name'], $zone);
         if (!$isBlacklisted) {
             $blacklist = ['name' => $datas['name'], 'zone_id' => $zone->id];
             $this->blacklistRepository->create($blacklist);
         }
         return redirect($this->route('zone.edit', ['zone' => $zone->id]))->with('success', $this->returnMessage('store', 'dns'));
     } catch (CloudflareException $e) {
         return back()->withInput()->withErrors([$e->getCode() . ' - ' . trans($e->getMessage())]);
     } catch (\Exceptions $e) {
         return back()->withInput()->withErrors([trans('admin.error.unknown_error')]);
     }
 }
 /**
  * Show the form for creating a new DNS Record for Domain.
  *
  * @param string $domainName
  * @param  DnsRequest $request
  * @return Response
  */
 public function postCreateDns($domainName, DnsRequest $request)
 {
     // validate domain name
     $domain = Domain::isDomainValid($domainName);
     if (false === $domain) {
         abort(404);
     }
     // check dns total, if dns_per_domain = 0 (unlimited) then dont check
     $dnsTotal = $domain->dnsRecords->count();
     if (Setting::get('dns_per_domain') > 0) {
         if ($dnsTotal > Setting::get('dns_per_domain')) {
             return back()->withInput()->withErrors([trans('front.dns.reach_max_domain_dns')]);
         }
     }
     try {
         $datas = $request->except(['_token']);
         if ('@' === $datas['name']) {
             $datas['name'] = $domainName;
         } else {
             $datas['name'] .= '.' . $domainName;
         }
         $cfDns = Cloudflare::createDnsRecord($domain->zone, $datas);
         $dnsRecord = $request->all();
         $dnsRecord['name'] = $datas['name'];
         $dnsRecord['cf_id'] = $cfDns->id;
         $dnsRecord['zone_id'] = $domain->zone->id;
         $dnsRecord['user_domain_id'] = $domain->id;
         $this->dnsRepository->create($dnsRecord);
         return redirect(route('user.domain.manage', ['domainName' => $domainName]))->with('success', trans('front.dns.success_add'));
     } catch (CloudflareException $e) {
         return back()->withInput()->withErrors([$e->getCode() . ' - ' . trans($e->getMessage())]);
     } catch (\Exceptions $e) {
         return back()->withInput()->withErrors([trans('front.error.please_contact_admin')]);
     }
 }