2 using System.Collections.Generic;
25 private List<Tuple<DateTime, DateTime>>
_dates;
28 public List<Tuple<DateTime, DateTime>>
Dates {
get {
return _dates; } }
39 String inst = Environment.MachineName.ToUpper();
41 if (inst.StartsWith(
"NDX"))
47 else if (inst ==
"NDXENGINX")
53 inst = inst.Substring(3);
67 FileInfo fiTeam =
new FileInfo(Seci.Definitions.Status.RBDataFilepath +
"\\" +
_instName +
"Team.xml");
68 FileInfo fiDates =
new FileInfo(Seci.Definitions.Status.RBDataFilepath +
"\\" +
_instName +
"Dates.xml");
83 for (
int i = 0; i < team.Tables[1].Columns.Count; ++i)
85 if (team.Tables[1].Columns[i].ColumnName.ToLower() ==
"ows_instrument")
89 else if (team.Tables[1].Columns[i].ColumnName.ToLower() ==
"ows_role")
93 else if (team.Tables[1].Columns[i].ColumnName.ToLower() ==
"ows_organisation")
97 else if (team.Tables[1].Columns[i].ColumnName.ToLower() ==
"ows_title")
101 else if (team.Tables[1].Columns[i].ColumnName.ToLower() ==
"ows_rbpart")
108 for (
int i = 0; i < data.Tables[1].Columns.Count; ++i)
110 if (data.Tables[1].Columns[i].ColumnName.ToLower() ==
"ows_scheduled_date")
114 else if (data.Tables[1].Columns[i].ColumnName.ToLower() ==
"ows_rbpart")
118 else if (data.Tables[1].Columns[i].ColumnName.ToLower() ==
"ows_time_allocated")
125 private void loadData(FileInfo team, FileInfo dates)
130 if (team.Exists && dates.Exists)
132 _teamData = RBDataHolder.loadData(team.FullName);
133 _dateData = RBDataHolder.loadData(dates.FullName);
135 if (
_teamData.Tables.Count == 0 || _dateData.Tables.Count == 0)
137 throw new DataException();
147 DataSet data =
new DataSet();
148 data.ReadXml(filepath);
154 List<string> experimenters =
new List<string>();
156 for (
int i = 0; i < _teamData.Tables[1].Rows.Count; ++i)
161 String inst = _teamData.Tables[1].Rows[i].ItemArray[
indexTeamInst].ToString();
162 String exptr = _teamData.Tables[1].Rows[i].ItemArray[
indexTeamExptr].ToString();
163 String institute = _teamData.Tables[1].Rows[i].ItemArray[
indexTeamInstitute].ToString();
165 if (!experimenters.Contains(exptr +
" (" + institute +
")") && inst.ToLower() ==
_instName.ToLower())
167 experimenters.Add(exptr +
" (" + institute +
")");
172 experimenters.Sort();
173 return experimenters;
178 _dates =
new List<Tuple<DateTime, DateTime>>();
179 List<string> dateStrings =
new List<string>();
181 for (
int i = 0; i < _teamData.Tables[1].Rows.Count; ++i)
183 String inst = _teamData.Tables[1].Rows[i].ItemArray[
indexTeamInst].ToString();
184 String exptr = _teamData.Tables[1].Rows[i].ItemArray[
indexTeamExptr].ToString();
185 String rb = _teamData.Tables[1].Rows[i].ItemArray[
indexTeamRBPart].ToString();
187 if (inst.ToLower() == _instName.ToLower() && Exptr.StartsWith(exptr) && !String.IsNullOrEmpty(rb))
190 _dates.Add(allocated);
192 if (allocated != null)
194 dateStrings.Add(allocated.Item1.ToShortDateString() +
" - " + allocated.Item2.ToShortDateString() +
" [RB = " + rb.Substring(0, rb.IndexOf(
'_')) +
"]");
198 dateStrings.Add(
"Unknown [RB = " + rb.Substring(0, rb.IndexOf(
'_')) +
"]");
208 for (
int i = 0; i < _dateData.Tables[1].Rows.Count; ++i)
214 DateTime start = Convert.ToDateTime(_dateData.Tables[1].Rows[i].ItemArray[
indexDateStart].ToString());
215 String duration = _dateData.Tables[1].Rows[i].ItemArray[
indexDateDuration].ToString();
216 DateTime end = start.AddDays(Double.Parse(duration));
217 return new Tuple<DateTime, DateTime>(start, end);
230 List<Tuple<DateTime, DateTime>> dates =
new List<Tuple<DateTime, DateTime>>();
232 for (
int i = 0; i < _dateData.Tables[1].Rows.Count; ++i)
238 DateTime start = Convert.ToDateTime(_dateData.Tables[1].Rows[i].ItemArray[
indexDateStart].ToString());
239 String duration = _dateData.Tables[1].Rows[i].ItemArray[
indexDateDuration].ToString();
240 DateTime end = start.AddDays(Double.Parse(duration));
241 dates.Add(
new Tuple<DateTime, DateTime>(start, end));
252 public bool DateOK(Tuple<DateTime, DateTime> daterange)
254 DateTime today = DateTime.Now;
255 if (today >= daterange.Item1.Subtract(
new TimeSpan(Seci.Definitions.Status.RBDateLeeway, 0, 0, 0))
256 && today <= daterange.Item2.AddDays(Seci.Definitions.Status.RBDateLeeway))
270 Boolean dateokay =
false;
273 foreach(var date
in dates)
289 return new List<User>();
292 List<User> PIs =
new List<User>();
293 List<User> contacts =
new List<User>();
294 List<User> users =
new List<User>();
296 for (
int i = 0; i < _teamData.Tables[1].Rows.Count; ++i)
300 String exptr = _teamData.Tables[1].Rows[i].ItemArray[
indexTeamExptr].ToString();
301 String role = _teamData.Tables[1].Rows[i].ItemArray[
indexTeamRole].ToString();
302 String institute = _teamData.Tables[1].Rows[i].ItemArray[
indexTeamInstitute].ToString();
304 if (role.ToLower() ==
"pi")
306 PI temp =
new PI(exptr, institute);
307 if (!PIs.Contains(temp))
312 else if (role.ToLower() ==
"contact")
315 if (!contacts.Contains(temp))
322 User temp =
new User(exptr, institute);
323 if (!users.Contains(temp))
332 users.InsertRange(0, contacts);
333 users.InsertRange(0, PIs);
static DataSet loadData(String filepath)
List< string > GetExperimenters()
Boolean RetrieveUsersAndCheckDate(String rbnumber, ref List< User > users)
List< Tuple< DateTime, DateTime > > getPossibleDates(String rb)
Tuple< DateTime, DateTime > getAllocatedDates(String rbpart)
void loadData(FileInfo team, FileInfo dates)
List< Tuple< DateTime, DateTime > > Dates
List< string > GetDates(String Exptr)
bool DateOK(Tuple< DateTime, DateTime > daterange)
void getColumns(DataSet team, DataSet data)
List< User > RetrieveUsersByRb(String rbnumber)
List< Tuple< DateTime, DateTime > > _dates