//STEP 2 END RECORDING AND SAVE DATA FROM CACHE
        public async Task <ActionResult> EndCarRecord(int carName)
        {
            //get car info from db
            var car = _carService.GetCarByName(carName);
            //save cached coordinates to database
            var carInCache = await RedisHelper.Instance.GetCacheItem <CachedRecordingModel>($"car_{car.CarName}");

            _carService.EndCarRecording(car.Id, carInCache.CachedCoordinates);

            //update robot status in cache
            carInCache.RobotStatus       = 0;
            carInCache.CachedCoordinates = new List <Coordinate>();
            await RedisHelper.Instance.SetCache($"car_{car.CarName}", carInCache);

            //send to robot to end recording
            var msg = new msg_control_cmd()
            {
                cmd       = 0,
                cmd_slave = 0,
                route_id  = 0
            };


            var outbound = new OutboundModel()
            {
                Ip      = carInCache.Ip,
                CarName = carInCache.CarName,
                Data    = new List <object> {
                    msg
                }
            };
            await RedisHelper.Instance.SetCache <OutboundModel>("command", outbound);

            return(Ok());
        }