using System;
using System.Collections.Generic;
using System.Text;
using GZTW.AyaNova.BLL;
using CSLA;
namespace AyaNovaOL
{
class FuzzyFetch
{
///
/// Tries to find a matching object of type T in AyaNova DB,
/// if none found creates a new one of that name
///
///
///
///
public static T GetMeThe(string sName)
{
T bizobject = default(T);
RootObjectTypes objectType = RootObjectTypes.Nothing;
if (typeof(T) == typeof(GZTW.AyaNova.BLL.Client)) objectType = RootObjectTypes.Client;
if (typeof(T) == typeof(GZTW.AyaNova.BLL.HeadOffice)) objectType = RootObjectTypes.HeadOffice;
if (typeof(T) == typeof(GZTW.AyaNova.BLL.Vendor)) objectType = RootObjectTypes.Vendor;
SearchResultList sr = SearchResultList.GetPickListForObjectType(sName, objectType);
foreach (Guid id in sr.ListPickListID)
{
switch (objectType)
{
case RootObjectTypes.Client:
{
Client c = Client.GetItem(id);
if (c.Name.Equals(sName, StringComparison.CurrentCultureIgnoreCase))
return (T)(object)c;
}
break;
case RootObjectTypes.HeadOffice:
{
HeadOffice c = HeadOffice.GetItem(id);
if (c.Name.Equals(sName, StringComparison.CurrentCultureIgnoreCase))
return (T)(object)c;
}
break;
case RootObjectTypes.Vendor:
{
Vendor c = Vendor.GetItem(id);
if (c.Name.Equals(sName, StringComparison.CurrentCultureIgnoreCase))
return (T)(object)c;
}
break;
}
}
//no matches so return a new one
switch (objectType)
{
case RootObjectTypes.Client:
{
Client c = Client.NewItem();
c.Name = sName;
return (T)(object)c;
}
case RootObjectTypes.HeadOffice:
{
HeadOffice c = HeadOffice.NewItem();
c.Name = sName;
return (T)(object)c;
}
case RootObjectTypes.Vendor:
{
Vendor c = Vendor.NewItem();
c.Name = sName;
return (T)(object)c;
}
}
return bizobject;
}
}
}