public ActionResult Index(DatabaseOwner oid)
{
if (oid == null)
{
ViewBag.Message = "Error: Must provide a Linked Server and Database Owner";
return RedirectToAction("Index", "Home", new {Message = "Must Select a Linked Server to continue!"});
}
else
{
var id = new LinkedServer();
var includeEmptyTables = oid.IncludeEmptyTables ?? false;
var linkedServerName = oid.LinkedServerName as string ?? "SIS";
//var databaseOwners = oid.Owner //as List<DatabaseOwner>;
var databaseOwnerName = oid.Owner ?? "SATURN";
//if (databaseOwners == null || !databaseOwners.Any())
//{
// databaseOwners = new List<DatabaseOwner>
// {
// new DatabaseOwner {LinkedServerName = linkedServerName, Owner = databaseOwnerName}
// };
//}
//else
//{
// databaseOwners = id.DatabaseOwners as List<DatabaseOwner>;
// var first = databaseOwners.FirstOrDefault();
// if (first != null) databaseOwnerName = first.Owner;
//}
var message = " Tables";
//if (databaseOwners.First().Owner.Equals("SATURN"))
if (databaseOwnerName.Equals("SATURN"))
{
message = "Banner" + message;
}
else
{
message = linkedServerName +'.' + databaseOwnerName + message;
}
ViewBag.Message = message;
using (var conn = new SqlConnection(ConfigurationManager.ConnectionStrings["MainDb"].ConnectionString))
{
conn.Open();
var loginId = User.Identity.Name;
var bannerUserList = conn.Query(string.Format("SELECT LoginId FROM BannerLoginIds WHERE LoginId = '{0}'", loginId)).ToList();
var includeBannerItems = bannerUserList.Count() == 1 ? true : false;
IList<Table> tables =
conn.Query<Table>(@"EXEC usp_GetLinkedServerTableNamesAndComments
@Owners = @databaseOwnerName,
@LinkedServerNames = @linkedServerName,
@IncludeEmptyTables = @includeEmptyTables,
@IncludeBannerItems = @includeBannerItems",
new { @databaseOwnerName = databaseOwnerName, @linkedServerName = linkedServerName, @includeEmptyTables = includeEmptyTables, @IncludeBannerItems = includeBannerItems}).ToList();
if (tables.Count == 1)
{
// means we got back a single matching table => jump to table details page:
var table = tables.FirstOrDefault();
return RedirectToAction("Details", "Tables", new { table.LinkedServerName, table.Owner, table.TableName, IncludeEmptyTables=includeEmptyTables});
}
return View(tables);
}
}
}