218 lines
6.3 KiB
C#
218 lines
6.3 KiB
C#
//-----------------------------------------------------------------------
|
|
// <copyright file="OpenhoursDayModel.cs" company="BTU/IIT">
|
|
// The MIT License (MIT). Copyright (c) 2013 BTU/IIT.
|
|
// </copyright>
|
|
// <author>Fiedler</author>
|
|
// <date>12.11.2013</date>
|
|
// <summary>Implements the openhours day model class</summary>
|
|
//-----------------------------------------------------------------------
|
|
namespace CampusAppWPortalLib8.Model.Openinghours
|
|
{
|
|
using System;
|
|
using System.Xml.Serialization;
|
|
|
|
/// <summary> A data Model for the openinghours day. </summary>
|
|
/// <remarks> Fiedler, 12.11.2013. </remarks>
|
|
[XmlRoot("Open")]
|
|
public class OpeninghoursDayModel
|
|
{
|
|
/// <summary> The start. </summary>
|
|
private TimeSpan start;
|
|
/// <summary> The end. </summary>
|
|
private TimeSpan end;
|
|
/// <summary> The day. </summary>
|
|
private DayOfWeek day;
|
|
|
|
/// <summary> Initializes a new instance of the OpeninghoursDayModel class. </summary>
|
|
/// <remarks> Fiedler, 12.11.2013. </remarks>
|
|
public OpeninghoursDayModel()
|
|
{
|
|
this.start = TimeSpan.Zero;
|
|
this.end = TimeSpan.Zero;
|
|
this.day = DayOfWeek.Sunday;
|
|
}
|
|
|
|
/// <summary> Gets or sets the start. </summary>
|
|
/// <value> The start. </value>
|
|
[XmlAttribute("start")]
|
|
public string Start
|
|
{
|
|
get
|
|
{
|
|
return this.TimeSpanToString(this.start);
|
|
}
|
|
|
|
set
|
|
{
|
|
this.start = this.StringToTimeSpan(value);
|
|
}
|
|
}
|
|
|
|
/// <summary> Gets or sets the start. </summary>
|
|
/// <value> The start. </value>
|
|
[XmlIgnore]
|
|
public TimeSpan StartTS
|
|
{
|
|
get
|
|
{
|
|
return this.start;
|
|
}
|
|
|
|
set
|
|
{
|
|
this.start = value;
|
|
}
|
|
}
|
|
|
|
/// <summary> Gets or sets the end. </summary>
|
|
/// <value> The end. </value>
|
|
[XmlAttribute("end")]
|
|
public string End
|
|
{
|
|
get
|
|
{
|
|
return this.TimeSpanToString(this.end);
|
|
}
|
|
|
|
set
|
|
{
|
|
this.end = this.StringToTimeSpan(value);
|
|
}
|
|
}
|
|
|
|
/// <summary> Gets or sets the end. </summary>
|
|
/// <value> The end. </value>
|
|
[XmlIgnore]
|
|
public TimeSpan EndTS
|
|
{
|
|
get
|
|
{
|
|
return this.end;
|
|
}
|
|
|
|
set
|
|
{
|
|
this.end = value;
|
|
}
|
|
}
|
|
|
|
/// <summary> Gets or sets the day. </summary>
|
|
/// <value> The day. </value>
|
|
[XmlAttribute("day")]
|
|
public int Day
|
|
{
|
|
get
|
|
{
|
|
return this.DayOfWeekToInt(this.day);
|
|
}
|
|
|
|
set
|
|
{
|
|
this.day = this.IntToDayOfWeek(value);
|
|
}
|
|
}
|
|
|
|
/// <summary> Gets or sets the day. </summary>
|
|
/// <value> The day. </value>
|
|
[XmlIgnore]
|
|
public DayOfWeek DayDOW
|
|
{
|
|
get
|
|
{
|
|
return this.day;
|
|
}
|
|
|
|
set
|
|
{
|
|
this.day = value;
|
|
}
|
|
}
|
|
|
|
/// <summary> Gets the time string. </summary>
|
|
/// <value> The time string. </value>
|
|
[XmlIgnore]
|
|
public string TimeString
|
|
{
|
|
get
|
|
{
|
|
return this.TimeSpanToString(this.start) + " - " + this.TimeSpanToString(this.end);
|
|
}
|
|
}
|
|
|
|
/// <summary> String to time span. </summary>
|
|
/// <remarks> Fiedler, 12.11.2013. </remarks>
|
|
/// <param name="str"> The. </param>
|
|
/// <returns> A TimeSpan. </returns>
|
|
private TimeSpan StringToTimeSpan(string str)
|
|
{
|
|
string[] split = str.Split(':');
|
|
|
|
return new TimeSpan(
|
|
int.Parse(split[0]),
|
|
(split.Length > 1) ? int.Parse(split[1]) : 0,
|
|
(split.Length > 2) ? int.Parse(split[2]) : 0);
|
|
}
|
|
|
|
/// <summary> Time span to string. </summary>
|
|
/// <remarks> Fiedler, 12.11.2013. </remarks>
|
|
/// <param name="span"> The span. </param>
|
|
/// <returns> A string. </returns>
|
|
private string TimeSpanToString(TimeSpan span)
|
|
{
|
|
return string.Format("{0:hh\\:mm}", span);
|
|
}
|
|
|
|
/// <summary> Int to day of week. </summary>
|
|
/// <remarks> Fiedler, 12.11.2013. </remarks>
|
|
/// <exception cref="NotSupportedException">
|
|
/// Thrown when the requested operation is not supported.
|
|
/// </exception>
|
|
/// <param name="dayNr"> The day nr. </param>
|
|
/// <returns> A DayOfWeek. </returns>
|
|
private DayOfWeek IntToDayOfWeek(int dayNr)
|
|
{
|
|
DayOfWeek retValue = DayOfWeek.Sunday;
|
|
|
|
switch(dayNr)
|
|
{
|
|
case 1: retValue = DayOfWeek.Monday; break;
|
|
case 2: retValue = DayOfWeek.Tuesday; break;
|
|
case 3: retValue = DayOfWeek.Wednesday; break;
|
|
case 4: retValue = DayOfWeek.Thursday; break;
|
|
case 5: retValue = DayOfWeek.Friday; break;
|
|
case 6: retValue = DayOfWeek.Saturday; break;
|
|
case 7: retValue = DayOfWeek.Sunday; break;
|
|
|
|
default:
|
|
{
|
|
throw new NotSupportedException("day number is not supported (" + dayNr + ")");
|
|
}
|
|
}
|
|
|
|
return retValue;
|
|
}
|
|
|
|
/// <summary> Day of week to int. </summary>
|
|
/// <remarks> Fiedler, 12.11.2013. </remarks>
|
|
/// <param name="dow"> The dow. </param>
|
|
/// <returns> An int. </returns>
|
|
private int DayOfWeekToInt(DayOfWeek dow)
|
|
{
|
|
int retValue = -1;
|
|
|
|
switch (dow)
|
|
{
|
|
case DayOfWeek.Monday: retValue = 1; break;
|
|
case DayOfWeek.Tuesday: retValue = 2; break;
|
|
case DayOfWeek.Wednesday: retValue = 3; break;
|
|
case DayOfWeek.Thursday: retValue = 4; break;
|
|
case DayOfWeek.Friday: retValue = 5; break;
|
|
case DayOfWeek.Saturday: retValue = 6; break;
|
|
case DayOfWeek.Sunday: retValue = 7; break;
|
|
}
|
|
|
|
return retValue;
|
|
}
|
|
}
|
|
}
|