Files
win8phoneApp/CampusAppWP8/CampusAppWPortalLib8/Model/Openinghours/OpenhoursDayModel.cs
Christian Fiedler fa5d2e17e5 #269 done
2013-11-13 13:46:53 +01:00

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;
}
}
}