public ReportModel AddModel()
{
if (Sources.Count == 0) throw new Exception("Unable to create a model: No source available.\r\nPlease create a source first.");
ReportModel result = ReportModel.Create();
result.Name = Helper.GetUniqueName("model", (from i in Models select i.Name).ToList());
ReportSource source = Sources.FirstOrDefault(i => i.IsDefault);
if (source == null) source = Sources[0];
result.SourceGUID = source.GUID;
result.Report = this;
Models.Add(result);
return result;
}
public static Report Create(Repository repository) { Report result = new Report() { GUID = Guid.NewGuid().ToString() }; result.FilePath = "NewReport." + Repository.SealReportFileExtension; result.Repository = repository; foreach (MetaSource source in repository.Sources) { ReportSource reportSource = result.AddSource(source); } if (result.Sources.Count == 0) result.AddSource(null); foreach (ReportSource source in result.Sources) { source.LoadRepositoryMetaSources(repository); //Remove the connection added if (source.Connections.Count > 1) source.Connections.RemoveAll(i => i.IsEditable); //And master table added for NoSQL if (source.IsNoSQL && source.MetaData.Tables.Count > 1) source.MetaData.Tables.RemoveAll(i => i.IsEditable); } //and a first model if (result.Models.Count == 0) result.AddModel(); //Add default views ReportView defaultView = result.AddModelHTMLView(); if (defaultView == null) throw new Exception(string.Format("Unable to find any view in your repository. Check that your repository folder '{0}' contains all the default sub-folders and files...", repository.RepositoryPath)); result.ViewGUID = defaultView.GUID; result.AddModelCSVView(); return result; }