Thursday, July 9, 2015

ReportingDashboard.Models.ReportModels.cs

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
}

No comments:

Post a Comment