public virtual IHttpActionResult Put(string id) { try { if (string.IsNullOrEmpty(id)) { return(ResponseMessage(Request.CreateResponse(HttpStatusCode.NotFound, Messages.IdIsMissing))); } View view = GetView(null); if (view == null) { return(ResponseMessage(Request.CreateResponse(HttpStatusCode.NotFound, string.Format(Messages.ViewNameNotFound, AppViewName)))); } if (!view.IsEditable()) { 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.ItemWithIdNotFound, id, AppViewName)))); } string json = System.Web.HttpContext.Current.Server.UrlDecode(Request.Content.ReadAsStringAsync().Result); Dictionary <string, object> values = RestHelper.Deserialize(view, json); if (values.ContainsKey("settings") && values["settings"] is Dictionary <string, object> ) { databaseSettings = (Dictionary <string, object>)values["settings"]; } appName = id; if (values.ContainsKey("Name") && values["Name"].ToString() != appName) { if (!Maps.IsDevUser()) { return(ResponseMessage(Request.CreateResponse(HttpStatusCode.Conflict, "The app Name cannot be changed."))); } newAppName = GetCleanName(values["Name"].ToString()); if (string.IsNullOrEmpty(newAppName)) { return(ResponseMessage(Request.CreateResponse(HttpStatusCode.Conflict, "The app Name cannot be empty"))); } if (Maps.Instance.AppExists(newAppName).HasValue) { return(ResponseMessage(Request.CreateResponse(HttpStatusCode.Conflict, "An app by this name already exists"))); } } view.Update(values, appId.Value.ToString(), false, view_BeforeEdit, view_BeforeEditInDatabase, view_AfterEditBeforeCommit, view_AfterEditAfterCommit); try { RestHelper.Refresh(id); FarmCachingSingeltone.Instance.ClearMachinesCache(id); } catch (Exception exception) { Map.Logger.Log("myApps", "delete", "refresh", exception, 1, string.Empty); } return(Ok()); } catch (Exception exception) { throw new BackAndApiUnexpectedResponseException(exception, this); } }
public virtual IHttpActionResult Post() { string appName = ""; try { View view = GetView(null); if (view == null) { return(ResponseMessage(Request.CreateResponse(HttpStatusCode.NotFound, string.Format(Messages.ViewNameNotFound, AppViewName)))); } if (!view.IsCreatable() && !view.IsDuplicatable()) { return(ResponseMessage(Request.CreateResponse(HttpStatusCode.Forbidden, Messages.ActionIsUnauthorized))); } string json = System.Web.HttpContext.Current.Server.UrlDecode(Request.Content.ReadAsStringAsync().Result); Dictionary <string, object> values = RestHelper.Deserialize(view, json); const string Creator = "Creator"; const string DatabaseStatus = "DatabaseStatus"; const string Name = "Name"; const string Title = "Title"; const string Environment = "Environment"; if (values.ContainsKey(Name)) { try { values[Name] = GetCleanName(values[Name].ToString()); } catch (Exception) { return(ResponseMessage(Request.CreateResponse(HttpStatusCode.Conflict, Messages.AppNameInvalid))); } } else { values.Add(Name, GetDefaultAppName()); //return ResponseMessage(Request.CreateResponse(HttpStatusCode.Conflict, Messages.AppNameCannotBeNull)); } if (!values.ContainsKey(Title)) { values.Add(Title, values[Name]); } else if (values[Title] == null || values[Title].Equals(string.Empty)) { values[Title] = values[Name]; } if (values.ContainsKey(Creator)) { values.Remove(Creator); } if (!values.ContainsKey(Environment)) { values.Add(Environment, "development"); } values.Add(Creator, view.Database.GetUserID()); values.Add(DatabaseStatus, (int)OnBoardingStatus.NotStarted); appName = values[Name].ToString(); string key = view.Create(values, false, view_BeforeCreate, view_BeforeCreateInDatabase, view_AfterCreateBeforeCommit, view_AfterCreateAfterCommit); return(Ok(new { __metadata = new { id = key, appName = appName } })); } catch (System.Data.SqlClient.SqlException exception) { const int DuplicateUniqueIndex = 2601; if (exception.Number == DuplicateUniqueIndex) { return(ResponseMessage(Request.CreateResponse(HttpStatusCode.Conflict, string.Format(Messages.AppNameAlreadyExists, appName)))); } else { throw new BackAndApiUnexpectedResponseException(exception, this); } } catch (Exception exception) { throw new BackAndApiUnexpectedResponseException(exception, this); } }