private void HandleStartClientResponse(int clientId, int hostClientId) { Debug.Log("HandleStartClientResponse clientId = " + clientId + " hostClientId = " + hostClientId); if (connectTask != null) { this.ClientId = clientId; this.hostClientId = (uint)hostClientId; RelayEvent re = new RelayEvent() { ChannelName = mlapidefaultChannel, ClientId = (ulong)clientId, payload = new ArraySegment <byte>(), receiveTime = timeSinceStartup, eventType = NetEventType.Connect }; /*connectTask.Tasks[0].Success = true; * connectTask.Tasks[0].IsDone = true; * connectTask = null;*/ lock (receivedEvents) { receivedEvents.Enqueue(re); } } }
private void HandleReceiveFromClient(int fromClientId, byte channelId, ArraySegment <byte> payload) { if (connectTask != null) { connectTask.Tasks[0].Success = true; connectTask.Tasks[0].IsDone = true; connectTask = null; } RelayEvent re = new RelayEvent() { ChannelName = channelIdToName[channelId], ClientId = (ulong)fromClientId, payload = payload, receiveTime = timeSinceStartup, eventType = NetEventType.Data }; //Debug.Log("Received payload from client " + fromClientId + " bytes: " + payload.Count+" channel: "+re.ChannelName); //Debug.Log("payload-data: " + BitConverter.ToString(payload.Array, payload.Offset, payload.Count)); lock (receivedEvents) { receivedEvents.Enqueue(re); } }
/// <summary> /// Handling incoming remote events /// </summary> private async Task OnRelayEvent(RelayEvent relayEvent, RelayEventStream eventStream) { switch (relayEvent.EventType) { case RelayEventType.Connected: await InitializeClient(); break; case RelayEventType.Disconnected: _eventHandler.OnDisconnected(); break; case RelayEventType.IncomingEvent: DispatchEvent(relayEvent.IncomingEvent); break; case RelayEventType.Error: _eventHandler.OnError(relayEvent.Error); break; default: throw new ArgumentOutOfRangeException(); } }
public void TestToStringMethod() { Console.WriteLine("Inside " + GetType().Name + " - " + System.Reflection.MethodBase.GetCurrentMethod().Name); RelayEvent myRelayEvent = new RelayEvent("PLM", "GWY", new EventPoints(5.0m, 0.0m, "A", "PLM", "11.3"), new EventPoints(0.0m, 0.0m, "A", "GWY", "11.4"), 5.0m, 0.0m); string strRelayEvent = myRelayEvent.ToString(); Console.WriteLine("My string:" + Environment.NewLine + Environment.NewLine); Console.WriteLine(strRelayEvent + Environment.NewLine); Console.WriteLine("Expecting:" + Environment.NewLine + Environment.NewLine); Console.WriteLine("First Place: A - PLM: 11.3" + Environment.NewLine + "First Place Pts: PLM: 5 GWY: 0" + Environment.NewLine + "Second Place: A - GWY: 11.4" + Environment.NewLine + "Second Place Pts: PLM: 0 GWY: 0" + Environment.NewLine + "Total: PLM: 5 GWY: 0"); Assert.AreEqual(strRelayEvent, "First Place: A - PLM: 11.3" + Environment.NewLine + "First Place Pts: PLM: 5 GWY: 0" + Environment.NewLine + "Second Place: A - GWY: 11.4" + Environment.NewLine + "Second Place Pts: PLM: 0 GWY: 0" + Environment.NewLine + "Total: PLM: 5 GWY: 0", GetType().Name + " - " + System.Reflection.MethodBase.GetCurrentMethod().Name + " Failed"); Console.WriteLine(GetType().Name + " - " + System.Reflection.MethodBase.GetCurrentMethod().Name + " Passed"); }
public ActionResult DeleteConfirmed(Guid id) { RelayEvent relayEvent = db.RelayEvents.Find(id); db.RelayEvents.Remove(relayEvent); db.SaveChanges(); return(RedirectToAction("Details", "Relays", new { id = relayEvent.RelayID })); }
public void TestDefaultConstructor() { Console.WriteLine("Inside " + GetType().Name + " - " + System.Reflection.MethodBase.GetCurrentMethod().Name); RelayEvent blankPerformance = new RelayEvent(); Assert.AreEqual(blankPerformance != null, true, GetType().Name + " - " + System.Reflection.MethodBase.GetCurrentMethod().Name + " Failed"); Console.WriteLine(GetType().Name + " - " + System.Reflection.MethodBase.GetCurrentMethod().Name + " Passed"); }
public void Publish_Args <T>(T value) { var result = default(T); var ev = new RelayEvent <T>(); ev.Subscribe(x => { result = x; }); ev.Publish(value); Assert.That(result, Is.EqualTo(value)); }
public void Publish_Subscribe() { var count = 0; var ev = new RelayEvent(); ev.Subscribe(() => ++ count); ev.Publish(); ev.Publish(); ev.Publish(); Assert.That(count, Is.EqualTo(3)); }
// GET: RelayEvents/Create public ActionResult Create(Guid id) { ViewData["relayparentid"] = id; RelayEvent eventToCreate = new RelayEvent(); eventToCreate.RelayId = id; eventToCreate.StartTime = DateTime.Now; eventToCreate.DurationInMinutes = 15; eventToCreate.EndTime = eventToCreate.StartTime.AddMinutes(15); return(View(eventToCreate)); }
// GET: RelayEvents/Create public ActionResult Create(Guid id) { ViewData["relayparentid"] = id; RelayEvent eventToCreate = new RelayEvent(); eventToCreate.RelayID = id; eventToCreate.start = DateTime.Now; eventToCreate.duration = 1; eventToCreate.end = eventToCreate.start.AddMinutes(5); return(View(eventToCreate)); }
public void TestEqualsMethod() { Console.WriteLine("Inside " + GetType().Name + " - " + System.Reflection.MethodBase.GetCurrentMethod().Name); bool test = true; RelayEvent controlRelayEvent = new RelayEvent("PLM", "GWY", new EventPoints(5.0m, 0.0m, "P1", "PLM", "11.3"), new EventPoints(3.0m, 0.0m, "P2", "PLM", "11.4"), 8.0m, 1.0m); RelayEvent equalRelayEvent = new RelayEvent("PLM", "GWY", new EventPoints(5.0m, 0.0m, "P1", "PLM", "11.3"), new EventPoints(3.0m, 0.0m, "P2", "PLM", "11.4"), 8.0m, 1.0m); RelayEvent diffTeam1 = new RelayEvent("WH", "GWY", new EventPoints(5.0m, 0.0m, "P1", "PLM", "11.3"), new EventPoints(3.0m, 0.0m, "P2", "PLM", "11.4"), 8.0m, 1.0m); RelayEvent diffTeam2 = new RelayEvent("PLM", "WH", new EventPoints(5.0m, 0.0m, "P1", "PLM", "11.3"), new EventPoints(3.0m, 0.0m, "P2", "PLM", "11.4"), 8.0m, 1.0m); RelayEvent diffFirstPlacePts = new RelayEvent("PLM", "GWY", new EventPoints(5.0m, 0.0m, "P4", "PLM", "11.3"), new EventPoints(3.0m, 0.0m, "P2", "PLM", "11.4"), 8.0m, 1.0m); RelayEvent diffSecondPlacePts = new RelayEvent("PLM", "GWY", new EventPoints(5.0m, 0.0m, "P1", "PLM", "11.3"), new EventPoints(3.0m, 0.0m, "P2", "PLM", "11.45"), 8.0m, 1.0m); RelayEvent diffTotalPts = new RelayEvent("PLM", "GWY", new EventPoints(5.0m, 0.0m, "P1", "PLM", "11.3"), new EventPoints(3.0m, 0.0m, "P2", "PLM", "11.4"), 9.0m, 0.0m); RelayEvent nullRelayEvent = new RelayEvent(); if (!controlRelayEvent.Equals(equalRelayEvent)) { test = false; Console.WriteLine("equalRelayEvent was not equal to controlRelayEvent"); } if (controlRelayEvent.Equals(diffTeam1)) { test = false; Console.WriteLine("diffTeam1 was equal to controlRelayEvent"); } if (controlRelayEvent.Equals(diffTeam2)) { test = false; Console.WriteLine("diffTeam2 was equal to controlRelayEvent"); } if (controlRelayEvent.Equals(diffFirstPlacePts)) { test = false; Console.WriteLine("diffFirstPlacePts was equal to controlRelayEvent"); } if (controlRelayEvent.Equals(diffSecondPlacePts)) { test = false; Console.WriteLine("diffSecondPlacePts was equal to controlRelayEvent"); } if (controlRelayEvent.Equals(diffTotalPts)) { test = false; Console.WriteLine("diffTotalPts was equal to controlRelayEvent"); } if (controlRelayEvent.Equals(nullRelayEvent)) { test = false; Console.WriteLine("nullRelayEvent was equal to controlRelayEvent"); } Assert.True(test, GetType().Name + " - " + System.Reflection.MethodBase.GetCurrentMethod().Name + " Failed"); Console.WriteLine(GetType().Name + " - " + System.Reflection.MethodBase.GetCurrentMethod().Name + " Passed"); }
public ActionResult Edit([Bind(Include = "ID,RelayID,start,end,duration,DurationType")] RelayEvent relayEvent) { if (ModelState.IsValid) { db.Entry(relayEvent).State = EntityState.Modified; db.SaveChanges(); return(RedirectToAction("Details", "Relays", new { id = relayEvent.RelayID })); } return(View(relayEvent)); }
public void Unsubscribe_Args(int value) { var count = 0; var ev = new RelayEvent <int>(); var disposable = ev.Subscribe(n => count += n); ev.Publish(value); ev.Publish(value); disposable.Dispose(); disposable.Dispose(); // ignore ev.Publish(value); Assert.That(count, Is.EqualTo(value * 2)); }
public void Unsubscribe() { var count = 0; var ev = new RelayEvent(); var disposable = ev.Subscribe(() => count++); ev.Publish(); ev.Publish(); disposable.Dispose(); disposable.Dispose(); // ignore ev.Publish(); Assert.That(count, Is.EqualTo(2)); }
public ActionResult Create([Bind(Include = "Id,RelayId,StartTime,EndTime,DurationInMinutes")] RelayEvent relayEvent) { if (ModelState.IsValid) { relayEvent.Id = Guid.NewGuid(); db.RelayEvents.Add(relayEvent); db.SaveChanges(); return(RedirectToAction("Details", "Relays", new { id = relayEvent.RelayId })); } return(View(relayEvent)); }
/// <summary> /// Tests parameterized constructor /// </summary> /// <remarks>Each attribute is tested individually for accuracy</remarks> public void TestParameterizedConstructor() { Console.WriteLine("Inside " + GetType().Name + " - " + System.Reflection.MethodBase.GetCurrentMethod().Name); bool test = true; IndEvent indEvent1 = new IndEvent("PLM", "GWY", new EventPoints(5.0m, 0.0m, "P1", "PLM", "11.3"), new EventPoints(3.0m, 0.0m, "P2", "PLM", "11.4"), new EventPoints(0.0m, 1.0m, "G1", "GWY", "11.5"), 8.0m, 1.0m); IndEvent indEvent2 = new IndEvent("PLM", "GWY", new EventPoints(0.0m, 5.0m, "P5", "PLM", "11.2"), new EventPoints(3.0m, 0.0m, "P2", "PLM", "11.4"), new EventPoints(0.0m, 1.0m, "G1", "GWY", "11.5"), 3.0m, 6.0m); Dictionary <string, IndEvent> indEvents = new Dictionary <string, IndEvent>(); indEvents.Add("Boy's 100", indEvent1); indEvents.Add("Boy's 200", indEvent2); RelayEvent relayEvent1 = new RelayEvent("PLM", "GWY", new EventPoints(5.0m, 0.0m, "A", "PLM", "11.3"), new EventPoints(0.0m, 0.0m, "A", "GWY", "11.4"), 5.0m, 0.0m); RelayEvent relayEvent2 = new RelayEvent("PLM", "GWY", new EventPoints(5.0m, 0.0m, "A", "PLM", "400"), new EventPoints(0.0m, 0.0m, "A", "GWY", "500"), 5.0m, 0.0m); Dictionary <string, RelayEvent> relayEvents = new Dictionary <string, RelayEvent>(); relayEvents.Add("Boy's 4x100", relayEvent1); relayEvents.Add("Boy's 4x400", relayEvent2); OverallScore myOverallScore = new OverallScore(Tuple.Create("PLM", "Plum"), Tuple.Create("GWY", "Gateway"), indEvents, relayEvents); if (myOverallScore == null) { test = false; Console.WriteLine("myOverallScore is null"); } if (!myOverallScore.team1.Equals(Tuple.Create("PLM", "Plum", 10.0m))) { test = false; Console.WriteLine("team1 does not have the correct value"); } if (!myOverallScore.team2.Equals(Tuple.Create("GWY", "Gateway", 6.0m))) { test = false; Console.WriteLine("team2 does not have the correct value"); } if (!myOverallScore.indEvents.OrderBy(r => r.Key).SequenceEqual(indEvents.OrderBy(r => r.Key))) { test = false; Console.WriteLine("indEvents does not have the correct value"); } if (!myOverallScore.relayEvents.OrderBy(r => r.Key).SequenceEqual(relayEvents.OrderBy(r => r.Key))) { test = false; Console.WriteLine("relayEvents does not have the correct value"); } Assert.True(test, GetType().Name + " - " + System.Reflection.MethodBase.GetCurrentMethod().Name + " Failed"); Console.WriteLine(GetType().Name + " - " + System.Reflection.MethodBase.GetCurrentMethod().Name + " Passed"); }
// GET: RelayEvents/Edit/5 public ActionResult Edit(Guid?id) { if (id == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } RelayEvent relayEvent = db.RelayEvents.Find(id); if (relayEvent == null) { return(HttpNotFound()); } return(View(relayEvent)); }
public OverallScore AddEvent(OverallScore scores, string eventName, RelayEvent eventToAdd) { try { IScoringSvc scoringSvc = (IScoringSvc)GetService(typeof(IScoringSvc).Name); OverallScore os = scoringSvc.AddEvent(scores, eventName, eventToAdd); return(os); } catch (Exception e) //Implement more specific Exceptions later { Console.WriteLine(e.ToString()); Console.Write(e.StackTrace); return(null); } }
public RelayEvent CalculateRelayEvent(string team1Abbr, string team2Abbr, List <Performance> perf) { try { IScoringSvc scoringSvc = (IScoringSvc)GetService(typeof(IScoringSvc).Name); RelayEvent re = scoringSvc.CalculateRelayEvent(team1Abbr, team2Abbr, perf); return(re); } catch (Exception e) //Implement more specific Exceptions later { Console.WriteLine(e.ToString()); Console.Write(e.StackTrace); return(null); } }
private void HandleClientConnected(int clientId) { RelayEvent re = new RelayEvent() { ChannelName = mlapidefaultChannel, ClientId = (ulong)clientId, payload = new ArraySegment <byte>(), receiveTime = timeSinceStartup, eventType = NetEventType.Connect }; lock (receivedEvents) { receivedEvents.Enqueue(re); } }
public void TestParameterizedConstructor() { Console.WriteLine("Inside " + GetType().Name + " - " + System.Reflection.MethodBase.GetCurrentMethod().Name); bool test = true; RelayEvent myRelayEvent = new RelayEvent("PLM", "GWY", new EventPoints(5.0m, 0.0m, "A", "PLM", "11.3"), new EventPoints(0.0m, 0.0m, "A", "GWY", "11.4"), 5.0m, 0.0m); if (myRelayEvent == null) { test = false; Console.WriteLine("myRelayEvent is null"); } if (myRelayEvent.team1 != "PLM") { test = false; Console.WriteLine("team1 does not have the correct value"); } if (myRelayEvent.team2 != "GWY") { test = false; Console.WriteLine("team2 does not have the correct value"); } if (!myRelayEvent.points[0].Equals(new EventPoints(5.0m, 0.0m, "A", "PLM", "11.3"))) { test = false; Console.WriteLine("firstPlacePts does not have the correct value"); } if (!myRelayEvent.points[1].Equals(new EventPoints(0.0m, 0.0m, "A", "GWY", "11.4"))) { test = false; Console.WriteLine("secondPlacePts does not have the correct value"); } if (myRelayEvent.team1Total != 5.0m) { test = false; Console.WriteLine("team1Total does not have the correct value"); } if (myRelayEvent.team2Total != 0.0m) { test = false; Console.WriteLine("team2Total does not have the correct value"); } Assert.True(test, GetType().Name + " - " + System.Reflection.MethodBase.GetCurrentMethod().Name + " Failed"); Console.WriteLine(GetType().Name + " - " + System.Reflection.MethodBase.GetCurrentMethod().Name + " Passed"); }
private void HandleClientDisconnected(int remoteClientId) { Debug.Log("HandleClientDisconnected remoteClientId = " + remoteClientId); RelayEvent re = new RelayEvent() { ChannelName = mlapidefaultChannel, ClientId = (ulong)remoteClientId, payload = new ArraySegment <byte>(), receiveTime = timeSinceStartup, eventType = NetEventType.Disconnect }; lock (receivedEvents) { receivedEvents.Enqueue(re); } }
/// <summary> /// Interface for calculating The overall score of a meet /// </summary> /// <param name="scores">Overall scores</param> /// <param name="gender">string to hold what gender the meet is, boy's or girl's</param> /// <returns>OverallScore object that holds accurate overall score points</returns> public OverallScore CalculateTotal(OverallScore scores, string gender) { decimal totalPointsTeam1 = 0; decimal totalPointsTeam2 = 0; IndEvent tempIndEvent = new IndEvent(); RelayEvent tempRelayEvent = new RelayEvent(); string[] validIndEvents = { "100", "200", "400", "800", "1600", "3200", "HH", "300H", "LJ", "TJ", "HJ", "PV", "ShotPut", "Discus", "Javelin" }; for (int i = 0; i < validIndEvents.Length; i++) { if (scores != null && scores.indEvents != null) { scores.indEvents.TryGetValue(gender + "'s " + validIndEvents[i], out tempIndEvent); if (tempIndEvent != null) { totalPointsTeam1 += tempIndEvent.team1Total; totalPointsTeam2 += tempIndEvent.team2Total; } } } //DO THE SAME FOR RELAY EVENTS string[] validRelayEvents = { "4x100", "4x400", "4x800" }; for (int i = 0; i < validRelayEvents.Length; i++) { if (scores != null && scores.relayEvents != null) { scores.relayEvents.TryGetValue(gender + "'s " + validRelayEvents[i], out tempRelayEvent); if (tempRelayEvent != null) { totalPointsTeam1 += tempRelayEvent.team1Total; totalPointsTeam2 += tempRelayEvent.team2Total; } } } scores.team1Points = totalPointsTeam1; scores.team2Points = totalPointsTeam2; return(scores); }
protected override void Seed(RaspContext context) { var devices = new List <Device>(); var relays = new List <Relay>(); var relayevents = new List <RelayEvent>(); Device device1 = new Device(); device1.devicenumber = 0; device1.Name = "0001d"; device1.ID = Guid.NewGuid(); device1.MaxRelays = 6; devices.Add(device1); Relay rel1 = new Relay(); rel1.DeviceID = device1.ID; rel1.Index = 0; rel1.Name = "r01:0001d"; rel1.ID = Guid.NewGuid(); relays.Add(rel1); RelayEvent ev11 = new RelayEvent { end = DateTime.Now, start = DateTime.Now, ID = Guid.NewGuid(), DurationType = "1", duration = 15, RelayID = rel1.ID }; relayevents.Add(ev11); devices.ForEach(s => context.Devices.Add(s)); context.SaveChanges(); relays.ForEach(s => context.Relays.Add(s)); context.SaveChanges(); relayevents.ForEach(s => context.RelayEvents.Add(s)); context.SaveChanges(); }
public void TestCreateMeetResultsDoc() { IndEvent indEvent1 = new IndEvent("PLM", "GWY", new EventPoints(5.0m, 0.0m, "P1", "PLM", "11.3"), new EventPoints(3.0m, 0.0m, "P2", "PLM", "11.4"), new EventPoints(0.0m, 1.0m, "G1", "GWY", "11.5"), 8.0m, 1.0m); IndEvent indEvent2 = new IndEvent("PLM", "GWY", new EventPoints(0.0m, 5.0m, "P5", "PLM", "11.2"), new EventPoints(3.0m, 0.0m, "P2", "PLM", "11.4"), new EventPoints(0.0m, 1.0m, "G1", "GWY", "11.5"), 3.0m, 6.0m); Dictionary <string, IndEvent> indEvents = new Dictionary <string, IndEvent>(); indEvents.Add("Boy's 100", indEvent1); indEvents.Add("Boy's 200", indEvent2); RelayEvent relayEvent1 = new RelayEvent("PLM", "GWY", new EventPoints(5.0m, 0.0m, "A", "PLM", "11.3"), new EventPoints(0.0m, 0.0m, "A", "GWY", "11.4"), 5.0m, 0.0m); RelayEvent relayEvent2 = new RelayEvent("PLM", "GWY", new EventPoints(5.0m, 0.0m, "A", "PLM", "400"), new EventPoints(0.0m, 0.0m, "A", "GWY", "500"), 5.0m, 0.0m); Dictionary <string, RelayEvent> relayEvents = new Dictionary <string, RelayEvent>(); relayEvents.Add("Boy's 4x100", relayEvent1); relayEvents.Add("Boy's 4x400", relayEvent2); OverallScore myOverallScore = new OverallScore(Tuple.Create("PLM", "Plum"), Tuple.Create("GWY", "Gateway"), indEvents, relayEvents); PrintoutDocXSvcImpl pdxi = new PrintoutDocXSvcImpl(); pdxi.CreateMeetResultsDoc("Boy's", new DateTime(01, 01, 2000), "Anywhere", myOverallScore); }
private void HandleDisconnect() { Debug.Log("HandleDisconnect ClientId = " + ClientId); if (connectTask != null) { connectTask.Tasks[0].Success = false; connectTask.Tasks[0].IsDone = true; connectTask = null; } lock (startStopClientLock) { if (started) { started = false; tcpClient.Dispose(); tcpClient = null; } } if (ClientId != -1) { RelayEvent re = new RelayEvent() { ChannelName = mlapidefaultChannel, ClientId = (ulong)ClientId, payload = new ArraySegment <byte>(), receiveTime = timeSinceStartup, eventType = NetEventType.Disconnect }; lock (receivedEvents) { receivedEvents.Enqueue(re); } ClientId = -1; } }
protected override void Seed(RaspBerryWebAppPro.Models.ApplicationDbContext context) { var devices = new List <Device>(); var relays = new List <Relay>(); var relayevents = new List <RelayEvent>(); Device device1 = new Device(); device1.SerialNumber = 0; device1.Name = "0001d"; device1.Id = Guid.NewGuid(); devices.Add(device1); Relay rel1 = new Relay(); rel1.DeviceId = device1.Id; rel1.Index = 0; rel1.Name = "r01:0001d"; rel1.Id = Guid.NewGuid(); relays.Add(rel1); RelayEvent ev11 = new RelayEvent { EndTime = DateTime.Now, StartTime = DateTime.Now, Id = Guid.NewGuid(), DurationInMinutes = 15, RelayId = rel1.Id }; relayevents.Add(ev11); devices.ForEach(s => context.Devices.Add(s)); context.SaveChanges(); relays.ForEach(s => context.Relays.Add(s)); context.SaveChanges(); relayevents.ForEach(s => context.RelayEvents.Add(s)); context.SaveChanges(); }
public override NetEventType PollEvent(out ulong clientId, out string channelName, out ArraySegment <byte> payload, out float receiveTime) { lock (receivedEvents) { if (receivedEvents.Count > 0) { RelayEvent re = receivedEvents.Dequeue(); clientId = re.ClientId; channelName = re.ChannelName; payload = re.payload; receiveTime = re.receiveTime; return(re.eventType); } else { clientId = 0; channelName = ""; payload = new ArraySegment <byte>(); receiveTime = timeSinceStartup; return(NetEventType.Nothing); } } }
/// <summary> /// Implementation for adding a relayEvent to an OverallScore object /// </summary> /// <param name="scores">Overall scores</param> /// <param name="eventName">Name of the event being added</param> /// <param name="eventToAdd">Data for the event being added</param> /// <returns>OverallScore with the event added</returns> public OverallScore AddEvent(OverallScore scores, string eventName, RelayEvent eventToAdd) { if (scores == null) { scores = new OverallScore(); } if (scores.relayEvents == null) { scores.relayEvents = new Dictionary <string, RelayEvent>(); } if (scores.relayEvents != null && scores.relayEvents.ContainsKey(eventName)) { scores.relayEvents[eventName] = eventToAdd; } else { scores.relayEvents.Add(eventName, eventToAdd); } return(scores); }
public ActionResult Create([Bind(Include = "ID,RelayID,start,duration,DurationType")] RelayEvent relayEvent) { if (ModelState.IsValid) { relayEvent.ID = Guid.NewGuid(); int durationMultipler = 1; if (relayEvent.DurationType == "1") { durationMultipler = 5; } else if (relayEvent.DurationType == "2") { durationMultipler = 60; } relayEvent.end = relayEvent.start.AddMinutes(durationMultipler * relayEvent.duration); db.RelayEvents.Add(relayEvent); db.SaveChanges(); return(RedirectToAction("Details", "Relays", new { id = relayEvent.RelayID })); } return(View(relayEvent)); }