Ejemplo n.º 1
0
        /// <summary>
        /// 軌跡MongoDB API
        /// </summary>
        /// <param name="model">>查詢軌跡參數: UTC起迄日期時間(必填), [司機UserId, VehicleId, TaskId(擇一)]</param>
        /// <param name="type">查詢軌跡條件: D-司機UserId(預設)、V-車輛Id、T-任務Id</param>
        public async Task <List <MongoAPIResponseModel> > GetTraceDataFromMongoDB(SearchTraceModel model)
        {
            _logger.Information("GetTraceDataFromMongoDB_: {0} ", JsonConvert.SerializeObject(model));

            string utcB       = model.BeginDateTime.ToUniversalTime().ToString("yyyy'-'MM'-'dd HH':'mm':'ss");
            string utcE       = model.EndDateTime.ToUniversalTime().ToString("yyyy'-'MM'-'dd HH':'mm':'ss");
            string requestUrl = string.Format("api/TrackLog/GetByDriverIdOrVehicleId?DriverId={0}&VehicleId={1}&utcStartTime={2}&utcTargetTime={3}", model.DriverId, model.VehicleId, utcB, utcE);

            _logger.Information("GetMongoDBTrace_mongoAPI : {0}{1} ", MongoAPIUrl, requestUrl);
            List <MongoAPIResponseModel> traceList = new List <MongoAPIResponseModel>();

            try
            {
                var client = new HttpClient();
                MongoAPIUrl        = ConfigurationManager.AppSettings["MongoAPIUrl"].ToString();
                client.BaseAddress = new Uri(MongoAPIUrl);
                client.DefaultRequestHeaders.Accept.Clear();
                client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));

                HttpResponseMessage response = await client.GetAsync(requestUrl);

                _logger.Information("GetMongoDBTrace_mongoAPI_Result: {0} ", JsonConvert.SerializeObject(response));
                if (response.IsSuccessStatusCode)
                {
                    var mg = await response.Content.ReadAsAsync <IEnumerable <MongoAPIResponseModel> >();

                    foreach (var i in mg)
                    {
                        traceList.Add(i);
                    }
                }

                client.Dispose();
            }
            catch (Exception ex)
            {
                _logger.Error("GetTraceDataFromMongoDB_Exception: {0} ", JsonConvert.SerializeObject(ex));
            }

            _logger.Information("GetTraceDataFromMongoDB_Result: {0} ", JsonConvert.SerializeObject(traceList));
            return(traceList);
        }
Ejemplo n.º 2
0
        public async Task <ActionResult> SingleTraceView(SearchTraceModel model)
        {
            _logger.Information("Monitor_SingleTraceView({0}) ", JsonConvert.SerializeObject(model));
            ResponseViewModel        result      = new ResponseViewModel();
            List <TraceRecordsModel> convertList = new List <TraceRecordsModel>();

            try
            {
                TraceRecordViewModel trace = new TraceRecordViewModel();
                trace.BeginDateTimeString = string.Format("{0:yyyy/MM/dd HH:mm:ss}", model.BeginDateTime);
                trace.EndDateTimeString   = string.Format("{0:yyyy/MM/dd HH:mm:ss}", model.EndDateTime);
                trace.VehicleId           = model.VehicleId;
                trace.DriverId            = model.DriverId;

                var mongotrack = await GetTraceDataFromMongoDB(model);

                _logger.Information("Monitor_SingleTraceView_MongoDBAPI: {0} ", JsonConvert.SerializeObject(mongotrack));

                convertList     = _traceService.ConvertToTraceView(mongotrack, model.DriverId, model.VehicleId);
                trace.TraceList = convertList;

                result.IsOk           = true;
                result.Message        = "車輛軌跡查詢";
                result.Data           = trace;
                result.HttpStatusCode = HttpStatusCode.OK;
            }
            catch (Exception ex)
            {
                result.IsOk           = false;
                result.Exception      = ex;
                result.Message        = MessageResource.UnexpectedErrorOccurred;
                result.Data           = null;
                result.HttpStatusCode = HttpStatusCode.InternalServerError;
            }

            result.ResponseTime = string.Format("{0:yyyy/MM/dd HH:mm:ss}", DateTime.Now);
            _logger.Information("Monitor_SingleTraceView_Result({0}) ", JsonConvert.SerializeObject(result));
            return(View("SingleTraceView", convertList));
        }
Ejemplo n.º 3
0
        public async Task <JsonResult> SearchTrace(SearchTraceModel model)
        {
            _logger.Information("Trace_SearchTrace({0}) ", JsonConvert.SerializeObject(model));

            if (SessionSearchTraceModel != null)
            {
                if (model != SessionSearchTraceModel)
                {
                    SessionSearchTraceModel = model;
                }
                else
                {
                    model = SessionSearchTraceModel;
                }
            }

            ResponseViewModel result = new ResponseViewModel();

            if (string.IsNullOrEmpty(model.DriverId) || model.DriverId == "null")
            {
                model.DriverId = null;
            }

            if (model.VehicleId == 0)
            {
                model.VehicleId = null;
            }

            try
            {
                TraceRecordViewModel trace = new TraceRecordViewModel();
                trace.BeginDateTimeString = string.Format("{0:yyyy/MM/dd HH:mm:ss}", model.BeginDateTime);
                trace.EndDateTimeString   = string.Format("{0:yyyy/MM/dd HH:mm:ss}", model.EndDateTime);
                trace.VehicleId           = model.VehicleId;
                trace.DriverId            = model.DriverId;

                //直接從MongoDB擷取
                var trackLog = await _traceService.GetTrace(model);

                //從MongoDB API 擷取
                //var mongotrack = await GetTraceDataFromMongoDB(model);
                //_logger.Information("Trace_SearchTrace_MongoDBAPI: {0} ", JsonConvert.SerializeObject(mongotrack));

                var convertList = _traceService.ConvertToTraceView(trackLog, model.DriverId, model.VehicleId);
                trace.TraceList = convertList;

                result.IsOk           = true;
                result.Message        = "車輛軌跡查詢";
                result.Data           = trace;
                result.HttpStatusCode = HttpStatusCode.OK;
            }
            catch (Exception ex)
            {
                result.IsOk           = false;
                result.Exception      = ex;
                result.Message        = MessageResource.UnexpectedErrorOccurred;
                result.Data           = null;
                result.HttpStatusCode = HttpStatusCode.InternalServerError;
            }

            result.ResponseTime = string.Format("{0:yyyy/MM/dd HH:mm:ss}", DateTime.Now);
            _logger.Information("Trace_SearchTrace_Result({0}) ", JsonConvert.SerializeObject(result));
            return(Json(result, JsonRequestBehavior.AllowGet));
        }