void Start()
    {
        if (_bodies == null)
        {
            string   json        = File.ReadAllText(System.IO.Directory.GetCurrentDirectory() + "//SerializationOverview24721533.json");
            JArray[] fetchedData = JsonConvert.DeserializeObject <JArray[]>(json);

            // _eBodies = JsonConvert.DeserializeObject<EmitBody[]>(json);
            // _eBodies = JsonConvert.DeserializeObject<EmitBody[]>(json);

            // var _testbody1 = JsonConvert.DeserializeObject<Dictionary<string, string>>(File.ReadAllText(_Path));

            /*
             * PropertyInfo[] infoArray = _jsonFrame[0].GetType().GetProperties();
             * foreach (PropertyInfo info in infoArray)
             * {
             *   Debug.Log(info.Name + ": " + info.GetValue(_jsonFrame[0],null));
             * }
             */
            foreach (var data in fetchedData.Select((v, i) => new { v, i }))
            {
                JsonFrame jsf = new JsonFrame();
                jsf.timestamp = (uint)data.v[0];
                jsf.bodies    = Newtonsoft.Json.JsonConvert.SerializeObject(data.v[1]);
                _jsonDatas.Insert(data.i, jsf);
            }
        }
    }
Example #2
0
        public ActionResult <IEnumerable <JsonFrame> > Post(Guid eventId, DateTime datePastDetect)
        {
            const int       quantityReceivedImage = 50;
            var             listFrame             = new List <JsonFrame>();
            var             dateFrames            = dbContext.Frames.Where(item => item.EventId == eventId).OrderBy(item => item.Timestamp).Select(item => item.Timestamp).Distinct().ToList();
            List <DateTime> dates;

            if (datePastDetect.Equals(DateTime.MinValue))
            {
                dates = dateFrames.Take(quantityReceivedImage).ToList();
            }
            else
            {
                var indexActualDate = dateFrames.FindIndex(
                    item => (Math.Abs((item - datePastDetect).TotalMilliseconds) <= 1.0)
                    );

                if (indexActualDate >= dateFrames.Count - 1)
                {
                    return(new List <JsonFrame>());
                }
                dates = dateFrames.GetRange(++indexActualDate, Math.Min(quantityReceivedImage, dateFrames.Count - (indexActualDate)));
            }

            foreach (var date in dates)
            {
                var frames = dbContext.FrameParameters.Where(item => item.Parameters.Name == "Type" && item.Value == "Frame" && item.Frames.EventId == eventId && item.Frames.Timestamp.Equals(date)).Select(item => item.Frames);
                foreach (var frame in frames)
                {
                    var jsonFrame = new JsonFrame();
                    jsonFrame.FrameId      = frame.Id;
                    jsonFrame.BackgroundId = dbContext.FrameParameters.Where(item => item.Parameters.Name == "BackgroundId" && item.Frames.Id == frame.Id).Select(item => item.Value).First();
                    jsonFrame.DateTime     = frame.Timestamp.ToString("yyyy-MM-dd HH:mm:ss.fff", CultureInfo.InvariantCulture);
                    jsonFrame.Coordinate_X = dbContext.FrameParameters.Where(item => item.Parameters.Name == "Coordinate_X" && item.Frames.Id == frame.Id).Select(item => item.Value).First();
                    jsonFrame.Coordinate_Y = dbContext.FrameParameters.Where(item => item.Parameters.Name == "Coordinate_Y" && item.Frames.Id == frame.Id).Select(item => item.Value).First();
                    jsonFrame.Width        = dbContext.FrameParameters.Where(item => item.Parameters.Name == "Width" && item.Frames.Id == frame.Id).Select(item => item.Value).First();
                    jsonFrame.Height       = dbContext.FrameParameters.Where(item => item.Parameters.Name == "Height" && item.Frames.Id == frame.Id).Select(item => item.Value).First();

                    using (var fileStream =
                               new FileStream(
                                   Path.Combine(new[]
                    {
                        Configuration.GetConfiguration().PathForStoreImage, eventId.ToString(), "Frame",
                        $"{frame.Id}.jpg"
                    }), FileMode.Open, FileAccess.Read, FileShare.Read))
                    {
                        var buffer = new byte[fileStream.Length];
                        fileStream.Read(buffer, 0, (int)fileStream.Length);
                        jsonFrame.Data = Convert.ToBase64String(buffer);
                    }

                    listFrame.Add(jsonFrame);
                }
            }
            return(listFrame.ToList());
        }