using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.ComponentModel.DataAnnotations;
using System.Globalization;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Web.Security;
using ReportingDashboard.Common;
namespace ReportingDashboard.Models.ReportModels.cs
{
// for common inheritance
public class ReportModel
{
public int Id { get; set; }
public ReportType ReportType;
public string Title;
public string Status { get; set; }
}
#region HL7 Models
public class HL7RecordCount
{
public int Id { get; set; }
public string Who { get; set; }
public string What { get; set; }
public string When { get; set; }
}
public class HL7PercentCountDays
{
public int Id { get; set; }
public DateTime Date { get; set; }
}
public class HL7DayDif
{
public DateTime Date { get; set; }
public string Dif { get; set; }
}
public class HL7PercentCount
{
public int Id { get; set; }
public string Who { get; set; }
public List<HL7DayDif> DayDifs {get; set;}
}
public class HL7Report {
public string SummationText { get; set; }
public List<HL7RecordCount> RecordCounts {get; set;}
public List<HL7PercentCount> PercentCounts {get; set;}
public List<string> DmisReports {get; set;}
}
public class HL7ReportModel : ReportModel
{
public string FileLocation { get; set; }
public List<string> TablesUpdated { get; set; }
public string TablesUpdatedLocation { get; set; }
public string RecordDateEnd { get; set; }
public List<HL7PercentCountDays> PercentCountDays { get; set; }
public HL7Report Report {get; set;}
}
#endregion HL7 Models
/*
* <er1:datum xmlns:er1="reportingdashboardreport">
<er1:id>4</er1:id>
<er1:title>Data Requests with creation data between 2015-06-07 and 2015-06-13</er1:title>
<er1:beginDate>20150607</er1:beginDate>
<er1:endDate>20150607</er1:endDate>
<er1:dataRequestsStarted>4</er1:dataRequestsStarted>
<er1:changeRequestsStarted>4</er1:changeRequestsStarted>
<er1:plls>
<er1:pll>Chaplin, Charlie</er1:pll>
<er1:pll>Saint Troy, Augustus</er1:pll></er1:plls>
<er1:epis>
<er1:epi>Spanial, Cocker</er1:epi>
<er1:epi>Poodle, Simple</er1:epi>
<er1:epi>Dane, Great</er1:epi></er1:epis>
<er1:devs><er1:dev>
<er1:name>Cooper, Jason</er1:name><er1:roles>
<er1:role>QA3</er1:role></er1:roles></er1:dev><er1:dev>
<er1:name>Bystander, Milicent</er1:name><er1:roles>
<er1:role>Programmer</er1:role>
<er1:role>QA3</er1:role></er1:roles></er1:dev><er1:dev>
<er1:name>Wallbanger, Harvey</er1:name><er1:roles>
<er1:role>Programmer</er1:role>
<er1:role>QA2</er1:role>
<er1:role>QA3</er1:role></er1:roles></er1:dev><er1:dev>
<er1:name>Chondria, Mito</er1:name><er1:roles>
<er1:role>Programmer</er1:role></er1:roles></er1:dev><er1:dev>
<er1:name>A Dale, Alan</er1:name><er1:roles>
<er1:role>Programmer</er1:role>
<er1:role>QA2</er1:role>
<er1:role>QA3</er1:role></er1:roles></er1:dev></er1:devs>
<er1:type>DR</er1:type>
<er1:status>initial</er1:status>
</er1:datum>
*/
#region DR Models
public class DRDev : IEquatable<DRDev>, IComparable<DRDev>
{
public int Id { get; set; }
public string Name { get; set; }
public List<string> Roles { get; set; }
public override bool Equals(object obj)
{
if (obj == null) return false;
DRDev castObject = obj as DRDev;
if (castObject == null) return false;
else return Equals(castObject);
}
public int InternalGetHashCode(object obj)
{
return Id;
}
public override int GetHashCode()
{
return Id;
}
public int CompareTo(DRDev other)
{
if (other == null)
{
return 1;
}
else
{
var comparison = this.Name.CompareTo(other.Name);
if (comparison == 0)
{
var r1 = this.Roles.Count;
var r2 = other.Roles.Count;
comparison = r1.CompareTo(r2);
if (comparison == 0)
{
var haveComparison = false;
for (var q = 0; (q < r1 && !haveComparison); q++)
{
comparison = this.Roles[q].CompareTo(other.Roles[q]);
if (comparison != 0)
{
haveComparison = true;
}
}
if( !haveComparison) {
comparison = 0;
}
}
}
return comparison;
}
}
public bool Equals(DRDev other)
{
if (other == null) return false;
return (this.Name.Equals(other.Name) && this.Roles.Equals(other.Roles));
}
}
public class DRReportModel : ReportModel
{
public string BeginDate { get; set; }
public string EndDate { get; set; }
public int DataRequestsStarted { get; set; }
public int ChangeRequestsStarted { get; set; }
public List<string> Plls { get; set; }
public List<string> Epis { get; set; }
public List<DRDev> Devs { get; set; }
}
#endregion DR Models
}