<?xml version="1.0" encoding="UTF-8"?>
<itop_design version="1.6">
	<classes>
		<class id="Ticket">
			<methods>
				<method id="CreateFromServiceSubcategory" _delta="define">
					<comment>/**
						* Instanciate an object of the relevant class, depending on the request type
						* @return DBObject
						*/</comment>
					<static>true</static>
					<access>public</access>
					<type>Factory</type>
					<code><![CDATA[	static public function CreateFromServiceSubcategory($oServiceSubcategory)
	{
        $sType = $oServiceSubcategory->Get('request_type');
        if ($sType == 'incident')
        {
            if (!class_exists('Incident'))
            {
                throw new Exception('Could not create a ticket after the service '.$oServiceSubcategory->Get('friendlyname').' of type '.$sType.': unknown class "Incident"');
            }
            $oRet = new Incident();
        }
        else
        {
            if (!class_exists('UserRequest'))
            {
                throw new Exception('Could not create a ticket after the service '.$oServiceSubcategory->Get('friendlyname').' of type '.$sType.': unknown class "UserRequest"');
            }
            $oRet = new UserRequest();
        }
        return $oRet;
	}]]></code>
				</method>
			</methods>
		</class>
	</classes>
	<module_designs>
		<module_design id="itop-portal">
			<bricks>
				<brick id="services">
					<levels>
						<level id="1">
							<levels>
								<level id="1">
									<levels>
										<level id="1">
											<actions>
												<action id="create_from_this">
													<class _delta="delete" />
													<factory_method _delta="define"><![CDATA[\Ticket::CreateFromServiceSubcategory]]></factory_method>
												</action>
											</actions>
										</level>
									</levels>
								</level>
							</levels>
						</level>
					</levels>
				</brick>
			</bricks>
			<classes>
				<class id="ServiceSubcategory">
					<scopes>
						<scope id="all">
							<oql_view _delta="redefine"><![CDATA[SELECT ServiceSubcategory WHERE status != 'obsolete']]></oql_view>
						</scope>
					</scopes>
				</class>
			</classes>
		</module_design>
	</module_designs>
</itop_design>
