public string Get(string id) { Sequence sequence = _db.Sequences.Find(id); Observation preObservation = _db.Observations.AsEnumerable().LastOrDefault(o => o.SequenceId == id); if (sequence is null) { return("not found"); } TrafficLight trafficLight = new TrafficLight(); if (preObservation is null) { if (sequence.StartColor == "red") { DateTime now = DateTime.Now; now.AddMilliseconds(-now.Millisecond); int seconds = (int)(now - sequence.CatheringDate).TotalSeconds; if (seconds > sequence.StartClock) { trafficLight.Color = "green"; trafficLight.Clock = _sequencesService.GetBrokenClock(_sequencesService.ConvertClocks(sequence.MaxClock), sequence.BrokenNumbers); } else { trafficLight.Color = "red"; } } else { trafficLight.Color = "green"; trafficLight.Clock = _sequencesService.GetBrokenClock(_sequencesService.ConvertClocks(sequence.StartClock), sequence.BrokenNumbers); } } else { trafficLight = _sequencesService.ConvertToTrafficLight(sequence, preObservation); } GoodResponse goodResponse = new GoodResponse() { Response = trafficLight }; return(JsonConvert.Json(goodResponse)); }
public async Task <string> Create() { try { Sequence sequence = _sequencesService.GenerateSequence(); sequence.CatheringDate = DateTime.Now; sequence.CatheringDate.AddMilliseconds(-sequence.CatheringDate.Millisecond); _db.Entry(sequence).State = Microsoft.EntityFrameworkCore.EntityState.Added; await _db.SaveChangesAsync(); GoodResponse response = new GoodResponse() { Response = new { sequence = sequence.Id } }; return(JsonConvert.Json(response)); } catch (Exception e) { throw e; } }
public async Task <string> Create(ObservationRequest observation) { string msg = _observationsService.CheckObservationValid(observation); if (msg != "ok") { return(JsonConvert.BadRequestJson(msg)); } Sequence sequence = _db.Sequences.Find(observation.Sequence); if (sequence is null) { return(JsonConvert.BadRequestJson("The sequence isn't found")); } if (sequence.IsOver) { return(JsonConvert.BadRequestJson("The red observation should be the last")); } Observation newObservation = new Observation(); Observation preObservation = _db.Observations.AsEnumerable().Reverse().FirstOrDefault(o => o.SequenceId == observation.Sequence); if (observation.Observation.Color == "red") { if (preObservation is null) { return(JsonConvert.BadRequestJson("There isn't enough data")); } if (_sequencesService.ToInt(preObservation.Numbers) == 1) { newObservation.Color = observation.Observation.Color; } else { return(JsonConvert.BadRequestJson("No solutions found")); } GoodResponse redResponse = new GoodResponse() { Response = new { start = new int[1] { sequence.StartClock }, missing = sequence.NickedBrokenNumbers } }; newObservation.SequenceId = observation.Sequence; newObservation.Id = $"{observation.Sequence}red"; _db.Entry(sequence).State = Microsoft.EntityFrameworkCore.EntityState.Modified; _db.Entry(newObservation).State = Microsoft.EntityFrameworkCore.EntityState.Added; await _db.SaveChangesAsync(); return(JsonConvert.Json(redResponse)); } try { newObservation.SequenceId = observation.Sequence; _sequencesService.SetObservationClocks(ref newObservation, ref sequence, _sequencesService.GetCurrentClockFromPre(preObservation.Numbers), observation.Observation.Numbers); sequence.StartClocks = _sequencesService.GetClosestValuesFromArray(sequence.StartClocks, observation.Observation.Numbers); } catch (NullReferenceException) { newObservation = new Observation(); string[] curClock = new string[0]; if (sequence.StartColor == "red") { curClock = _sequencesService.ConvertClocks(sequence.MaxClock); } else { curClock = _sequencesService.ConvertClocks(sequence.StartClock); } if (!_sequencesService.GetTrueClockValide(observation.Observation.Numbers, sequence.BrokenNumbers, curClock)) { return("bad request"); } _sequencesService.SetObservationClocks(ref newObservation, ref sequence, curClock, observation.Observation.Numbers); sequence.StartClocks = _sequencesService.GetClosestValues(observation.Observation.Numbers); } GoodResponse response = new GoodResponse() { Response = new { start = sequence.StartClocks, missing = sequence.NickedBrokenNumbers } }; newObservation.SequenceId = observation.Sequence; newObservation.Id = $"{newObservation.SequenceId}{newObservation.Numbers[0]}{newObservation.Numbers[1]}"; _db.Entry(sequence).State = Microsoft.EntityFrameworkCore.EntityState.Modified; _db.Entry(newObservation).State = Microsoft.EntityFrameworkCore.EntityState.Added; await _db.SaveChangesAsync(); return(JsonConvert.Json(response)); }