private IHttpActionResult Get(string id = null, bool?deep = null, bool?stat = null) { try { View view = GetView(null); if (view == null) { return(ResponseMessage(Request.CreateResponse(HttpStatusCode.NotFound, string.Format(Messages.ViewNameNotFound, AppViewName)))); } if (string.IsNullOrEmpty(id)) { return(ResponseMessage(Request.CreateResponse(HttpStatusCode.NotFound, Messages.IdIsMissing))); } if (!view.IsAllow()) { return(ResponseMessage(Request.CreateResponse(HttpStatusCode.Forbidden, Messages.ActionIsUnauthorized))); } int?appId = Maps.Instance.AppExists(id, Convert.ToInt32(Maps.Instance.DuradosMap.Database.GetUserID())); if (!appId.HasValue) { return(ResponseMessage(Request.CreateResponse(HttpStatusCode.NotFound, string.Format(Messages.AppNotFound, id)))); } SetRequestItemCurrentAppName(id); Map.Logger.Log(GetControllerNameForLog(ControllerContext), "myApp", "before get item", null, 5, null); var item = RestHelper.Get(view, appId.Value.ToString(), deep ?? false, view_BeforeSelect, view_AfterSelect); Map.Logger.Log(GetControllerNameForLog(ControllerContext), "myApp", "after get item", null, 5, null); if (item == null) { return(ResponseMessage(Request.CreateResponse(HttpStatusCode.NotFound, string.Format(Messages.AppNotFound, id)))); } if (id != Maps.DuradosAppName && !BlobExists(id, appId.ToString())) { if (item["DatabaseStatus"].Equals(1)) { item["DatabaseStatus"] = 2; Maps.Instance.DuradosMap.Logger.Log("uue", "myApps", "appName: " + id, null, -754, "141"); } return(Ok(item)); } View databaseView = null; try { if (item["DatabaseStatus"].Equals(1)) { databaseView = (View)Maps.Instance.GetMap(id).GetConfigDatabase().Views["Database"]; } } catch (Exception exception) { try { Maps.Instance.DuradosMap.Logger.Log("Map", "Initiate", "Get", exception, 1, "failt to initiate " + id); } catch { } try { HandleInitiationFailure(id); try { if (item["DatabaseStatus"].Equals(1)) { databaseView = (View)Maps.Instance.GetMap(id).GetConfigDatabase().Views["Database"]; } } catch { } } catch (Exception exception2) { try { Maps.Instance.DuradosMap.Logger.Log("Map", "Initiate", "HandleInitiationFailure", exception2, 1, "failt to HandleInitiationFailure " + id); } catch { } } } if (databaseView == null) { item.Add("settings", ""); } else { Dictionary <string, object> db = null; try { db = RestHelper.Get(databaseView, "0", true, view_BeforeSelect, view_AfterSelect, true, true); } catch { if (item["DatabaseStatus"].Equals(2)) { return(Ok(item)); } else { return(ResponseMessage(Request.CreateResponse(HttpStatusCode.NotFound, string.Format(Messages.AppNotFound, id)))); } } item.Add("settings", db); } item.Add("connectionSource", RestHelper.GetConnectionSource(id)); bool debugMode = false; try { debugMode = SharedMemorySingeltone.Instance.Contains(id, SharedMemoryKey.DebugMode); } catch { } item.Add("debugMode", debugMode); if (deep.HasValue && deep.Value && item["DatabaseStatus"].Equals(1)) { bool reset = false; if (stat.HasValue && stat.Value) { reset = true; } RestHelper.AddStat(item, id, reset); } else { if (item["DatabaseStatus"].Equals((int)OnBoardingStatus.Error)) { try { if (!item["DatabaseStatus"].Equals(2)) { Map map = Maps.Instance.GetMap(id); if (map != null) { if (map.Database.TestConnection()) { Maps.Instance.UpdateOnBoardingStatus(OnBoardingStatus.Ready, appId.Value.ToString()); } //else //{ // Maps.Instance.Restart(id); // if (Map.Database.TestConnection()) // { // Maps.Instance.UpdateOnBoardingStatus(OnBoardingStatus.Ready, appId.Value.ToString()); // } //} } } } catch (Exception exception) { Map.Logger.Log("Map", "Initiate", "UpdateOnBoardingStatus", exception, 1, "Failed to Update OnBoarding Status"); } } } return(Ok(item)); } catch (Exception exception) { throw new BackAndApiUnexpectedResponseException(exception, this); } }