App-Office-Contacts

 view release on metacpan or  search on metacpan

lib/App/Office/Contacts/Controller/Exporter/Organization.pm  view on Meta::CPAN

package App::Office::Contacts::Controller::Exporter::Organization;

use strict;
use utf8;
use warnings;
use warnings  qw(FATAL utf8); # Fatalize encoding glitches.

use App::Office::Contacts::Util::Validator;

use Encode; # For encode().

use Sub::Exporter -setup =>
{
	exports =>
	[qw/
		add
		cgiapp_init
		delete
		display
		get_staff
		update
	/],
};

use Try::Tiny;

our $VERSION = '2.04';

# -----------------------------------------------

sub add
{
	my($self) = @_;

	$self -> param('db') -> simple -> begin_work;
	$self -> add_header('-Status' => 200, '-Content-Type' => 'text/xml; charset=utf-8');

	my($response, $result);

	try
	{
		$self -> log(debug => 'Controller::Exporter::Org.add()');

		$result = App::Office::Contacts::Util::Validator -> new
		(
			app    => $self,
			config => $self -> param('config'),
			db     => $self -> param('db'),
			query  => $self -> query,
		) -> add_organization;

		if ($result -> success)
		{
			$response = $self -> param('db') -> library -> build_ok_xml
				(
					$self -> param('view') -> organization -> add($self -> param('user_id'), $result)
				);
		}
		else
		{
			$response = 'Error: Validation failed';
		}

		$self -> param('db') -> simple -> commit;
	}
	catch
	{
		my($error) = $_;

		$self -> param('db') -> simple -> rollback;

		# Try to log the error despite the error.

		$self -> log(error => "System error: $error");

		$response = 'Error: Software error';
	};

	$self -> log(debug => 'Run mode response: ' . ($response =~ /^Error/ ? $response : 'OK') );

	return encode('utf-8', $response);

} # End of add.

# -----------------------------------------------



( run in 0.690 second using v1.01-cache-2.11-cpan-39bf76dae61 )