private void WriteOnGet(IEntity entity) { cw.BeginFunction("public override object OnGet({0} {1})", NamingHelperStack.ToServiceRequestName(entity, interfacesEnvironment), VarName_Request); cw.WriteLine("{0} {1} = new {0}();", NamingHelperStack.ToServiceResponseName(entity, interfacesEnvironment), VarName_Response); WriteInitResponse(VarName_Response); cw.WriteLine("{0} {1} = null;", domainEnvironment.ToTypeName(entity, true), VarName_DomainObject); cw.BeginTry(); cw.If(entity.Constraints.PrimaryId.Attributes.ToNamesString(" && ", VarName_Request + ".", " != null")); // Global // Request by primary id cw.WriteLine("{0} = {1}.{2}({3});", VarName_DomainObject, domainEnvironment.ToTypeName(entity, true), DomainLayerConfig.Methods.GetById(entity.Constraints.PrimaryId, domainEnvironment).Name, cw.ToSeparatedString(entity.Constraints.PrimaryId.Attributes.ToList(), ", ", delegate(object item, int count) { return(String.Format("{0}.{1}{2}", VarName_Request, (item as IAttribute).Name, environment.IsNullable(item as IAttribute) ? ".Value" : "")); }) ); // Request by uid foreach (IUniqueId uid in entity.Constraints.UniqueIds) { cw.ElseIf(uid.Attributes.ToNamesString(" && ", VarName_Request + ".", " != null")); cw.WriteLine("{0} = {1}.{2}({3});", VarName_DomainObject, domainEnvironment.ToTypeName(entity, true), DomainLayerConfig.Methods.GetByUniqueId(uid, domainEnvironment).Name, cw.ToSeparatedString(uid.Attributes.ToList(), ", ", delegate(object item, int count) { string arg = String.Empty; if ((item as IAttribute).Type is IEnumerationType) { arg = String.Format("({0})", domainEnvironment.ToTypeName((item as IAttribute), true)); } arg += String.Format("{0}.{1}{2}", VarName_Request, (item as IAttribute).Name, environment.IsNullable(item as IAttribute) ? ".Value" : ""); return(arg); }) ); } // Request by relation foreach (IRelation r in entity.Parents) { cw.ElseIf(r.ChildAttributes.ToNamesString(" && ", VarName_Request + ".", " != null")); cw.WriteLine("{0} {1} = new {0}();", NamingHelperStack.ToServiceResponseCollectionName(entity, interfacesEnvironment), VarName_ResponseList); WriteInitResponse(VarName_ResponseList); cw.BeginTry(); cw.WriteLine("IList<{0}> list = ", domainEnvironment.ToTypeName(entity, true)); cw.Indent++; cw.WriteLine("{0}.{1};", domainEnvironment.ToTypeName(entity, true), DomainLayerConfig.Methods.GetByRelationParent(r, domainEnvironment) .Call(r.ChildAttributes.ToNamesString(", ", VarName_Request + ".", ".Value")) ); cw.Indent--; cw.WriteLine("{0}.{1} = {2}(list);", VarName_ResponseList, NamingHelperStack.ToDTOCollectionPropertyName(entity), MethodName_DomainCollectionToDTO); cw.EndTry(); WriteCatch(VarName_ResponseList); cw.WriteLine("return {0};", VarName_ResponseList); } cw.Else(); // Collection request TOP MaxPageSize or by page cw.WriteLine("{0} {1} = new {0}();", NamingHelperStack.ToServiceResponseCollectionName(entity, interfacesEnvironment), VarName_ResponseList); WriteInitResponse(VarName_ResponseList); cw.BeginTry(); cw.WriteLine("IList<{0}> list = null;", domainEnvironment.ToTypeName(entity, true)); cw.If("{0}.{1} != null && {0}.{2} != null", VarName_Request, NamingHelperStack.ParamName_PageNumber, NamingHelperStack.ParamName_PageSize); cw.If("{0}.{1} != null && {0}.{2} != null", VarName_Request, NamingHelperStack.ParamName_SortOrderProperty, NamingHelperStack.ParamName_SortOrderAsc); cw.WriteLine("list = {0}.GetPage({1}.{2}.Value, {1}.{3}.Value, new {4}[] {{ new {4}({1}.{5}, {1}.{6}.Value) }});", domainEnvironment.ToTypeName(entity, true), VarName_Request, NamingHelperStack.ParamName_PageNumber, NamingHelperStack.ParamName_PageSize, DomainLayerConfig.GetClassName_SortOrder(true), NamingHelperStack.ParamName_SortOrderProperty, NamingHelperStack.ParamName_SortOrderAsc); cw.Else(); cw.WriteLine("list = {0}.GetPage({1}.{2}.Value, {1}.{3}.Value, null);", domainEnvironment.ToTypeName(entity, true), VarName_Request, NamingHelperStack.ParamName_PageNumber, NamingHelperStack.ParamName_PageSize); cw.EndIf(); cw.Else(); cw.WriteLine("list = {0}.GetPage(0, {1}, null);", domainEnvironment.ToTypeName(entity, true), RestServiceHelper.MaxPageSize); cw.EndIf(); cw.WriteLine("{0}.{1} = {2}(list);", VarName_ResponseList, NamingHelperStack.ToDTOCollectionPropertyName(entity), MethodName_DomainCollectionToDTO); cw.EndTry(); WriteCatch(VarName_ResponseList); cw.WriteLine("return {0};", VarName_ResponseList); cw.EndIf(); // Global cw.WriteLine(); cw.If("{0} != null", VarName_DomainObject); cw.WriteLine("{0} {1} = new {0}();", NamingHelperStack.ToDTOTypeName(entity, interfacesEnvironment), VarName_DTO); cw.WriteLine("{0}.{1}({2}, {3});", NamingHelperStack.ToServiceName(entity, null), MethodName_DomainObjectToDTO, VarName_DomainObject, VarName_DTO); cw.WriteLine("{0}.{1} = {2};", VarName_Response, NamingHelperStack.ToDTOPropertyName(entity), VarName_DTO); cw.EndIf(); cw.EndTry(); WriteCatch(VarName_Response); cw.WriteLine("return {0};", VarName_Response); cw.EndFunction(); }