//------------------------------------------------------------------------------------------ //------------------------------------------------------------------------------------------ private void _ChangeWidget(ActiveBoard b, Change change) { /*verificam ce s-a schimbat */ var jss = new JavaScriptSerializer(); ChangeDataWidget cd = null; try { cd = jss.Deserialize <ChangeDataWidget>(change.ChangeString); } catch { return; } /*cautam activelayer-ul parinte*/ if (!b.Layers.ContainsKey(cd.LayerId)) { throw new Exception("Parent layer id for changed widget not found"); } ActiveLayer l = b.Layers[cd.LayerId]; ActiveWidget w = null; /*cautam activewidget-ul corespunzator*/ if (!l.Widgets.ContainsKey(cd.Id)) { throw new Exception("Changed widget id not found"); } try { w = l.Widgets[cd.Id]; } catch (KeyNotFoundException) { return; } /*modificam campurile*/ w.Name = (w.WidgetEntity.Name = cd.Name); w.Type = (w.WidgetEntity.Type = cd.Type); w.Data = (w.WidgetEntity.Data = cd.Data); /* daca e schimbat orderul, trebuie refacut stack-ul */ if (cd.Order != w.WidgetEntity.Order) { w.WidgetEntity.Order = cd.Order; /*il stergem din pozitia existenta*/ l.WidgetsStack.Remove(w); /*il reinseram*/ if (l.WidgetsStack.Count <= cd.Order) { l.WidgetsStack.Add(w); } else { l.WidgetsStack.Insert(cd.Order, w); } } }
//------------------------------------------------------------------------------------------ //------------------------------------------------------------------------------------------ public void Save() { /*refacem campul order pentru widgeturi si layere */ foreach (ActiveBoard b in this._activeBoards.Values) { for (int i = 0; i < b.LayerStack.Count(); i++) { ActiveLayer layer = b.LayerStack[i]; layer.LayerEntity.Order = i; for (int j = 0; j < layer.WidgetsStack.Count(); j++) { ActiveWidget widget = layer.WidgetsStack[j]; widget.WidgetEntity.Order = j; } } } /*salvam baza de date*/ try { this._em.SaveChanges(); } catch (Exception ex) { Console.WriteLine(ex.ToString()); } }
//------------------------------------------------------------------------------------------ //------------------------------------------------------------------------------------------ private void _AddWidget(ActiveBoard b, Change change) { ActiveWidget newActiveWidget = new ActiveWidget(); var jss = new JavaScriptSerializer(); ChangeDataWidget cd = jss.Deserialize <ChangeDataWidget>(change.ChangeString); newActiveWidget.WidgetId = cd.Id; newActiveWidget.Name = cd.Name; newActiveWidget.Type = cd.Type; newActiveWidget.Data = cd.Data; /*creem si o entitate in bd*/ Widget newWidget = new Widget(); newActiveWidget.WidgetEntity = newWidget; newWidget.WidgetId = cd.Id; newWidget.Order = cd.Order; newWidget.LayerId = cd.LayerId; newWidget.Name = cd.Name; newWidget.Data = cd.Data; /*inseram in listele de widgeturi din layer*/ try { lock (b.Layers[cd.LayerId].Widgets) { b.Layers[cd.LayerId].Widgets.Add(cd.Id, newActiveWidget); } lock (b.Layers[cd.LayerId].WidgetsStack) { b.Layers[cd.LayerId].WidgetsStack.Insert(cd.Order, newActiveWidget); } } catch (KeyNotFoundException ex) { Console.WriteLine(ex.ToString()); } this._em.AddToWidgets(newWidget); }
//------------------------------------------------------------------------------------------ //------------------------------------------------------------------------------------------ /*public void AddWidget(ActiveWidget widget) { this.Widgets[widget.WidgetId] = widget; /*adaugam in coada liste - this.WidgetsStack[widget.Order] = widget; }*/ //------------------------------------------------------------------------------------------ //------------------------------------------------------------------------------------------ public void RemoveWidget(ActiveWidget widget) { this.Widgets.Remove(widget.WidgetId); this.WidgetsStack.Remove(widget); }
//------------------------------------------------------------------------------------------ //------------------------------------------------------------------------------------------ private ActiveBoard _LoadBoard(int id) { ActiveBoard newBoard = new ActiveBoard(); var res = (from d in this._em.Boards where d.Id == id select d).ToList(); if (res.Count() < 1) return null; Board b = res[0]; /* ii salvam entitatea*/ newBoard.BoardEntity = b; /* adaugam layers din bd */ var res1 = (from d in this._em.Layers where d.BoardId == b.Id select d).ToList(); newBoard.LayerStack = new List<ActiveLayer>(res1.Count); foreach (Layer l in res1) { ActiveLayer newLayer = new ActiveLayer(); newLayer.LayerEntity = l; newLayer.Id = l.LayerId; newLayer.Name = l.Name; newBoard.Layers.Add(l.LayerId, newLayer); if (l.Order > newBoard.LayerStack.Count) newBoard.LayerStack.Add(newLayer); else newBoard.LayerStack.Insert(l.Order, newLayer); } /* adaugam widgeturile pentru fiecare layer*/ foreach (KeyValuePair<int, ActiveLayer> activeLayerPair in newBoard.Layers) { var res2 = (from d in this._em.Widgets where d.LayerId == activeLayerPair.Key select d).ToList(); activeLayerPair.Value.WidgetsStack = new List<ActiveWidget>(res2.Count); foreach (Widget w in res2) { ActiveWidget newWidget = new ActiveWidget(); newWidget.WidgetEntity = w; newWidget.WidgetId = w.WidgetId; newWidget.Type = w.Type; newWidget.Data = w.Data; newWidget.Name = w.Name; try { activeLayerPair.Value.Widgets.Add(newWidget.WidgetId, newWidget); if (w.Order > activeLayerPair.Value.WidgetsStack.Count) activeLayerPair.Value.WidgetsStack.Add(newWidget); else activeLayerPair.Value.WidgetsStack.Insert(w.Order, newWidget); } catch (Exception ex) { Console.WriteLine(ex.ToString()); } } } /* adaugam userii care au drepturi asupra boardului*/ var res3 = (from d in this._em.UserRights where d.BoardId == id select d).ToList(); foreach (UserRight ur in res3) { ActiveUser u = new ActiveUser(); u.Username = ur.User; newBoard.UsersTable.Add(u.Username, u); } /* adaugam noul board incarcat in lista activa*/ this._activeBoards.Add(b.Id, newBoard); return newBoard; }
//------------------------------------------------------------------------------------------ //------------------------------------------------------------------------------------------ private void _AddWidget(ActiveBoard b, Change change) { ActiveWidget newActiveWidget = new ActiveWidget(); var jss = new JavaScriptSerializer(); ChangeDataWidget cd = jss.Deserialize<ChangeDataWidget>(change.ChangeString); newActiveWidget.WidgetId = cd.Id; newActiveWidget.Name = cd.Name; newActiveWidget.Type = cd.Type; newActiveWidget.Data = cd.Data; /*creem si o entitate in bd*/ Widget newWidget = new Widget(); newActiveWidget.WidgetEntity = newWidget; newWidget.WidgetId = cd.Id; newWidget.Order = cd.Order; newWidget.LayerId = cd.LayerId; newWidget.Name = cd.Name; newWidget.Data = cd.Data; /*inseram in listele de widgeturi din layer*/ try { lock (b.Layers[cd.LayerId].Widgets) { b.Layers[cd.LayerId].Widgets.Add(cd.Id, newActiveWidget); } lock (b.Layers[cd.LayerId].WidgetsStack) { b.Layers[cd.LayerId].WidgetsStack.Insert(cd.Order, newActiveWidget); } } catch (KeyNotFoundException ex) { Console.WriteLine(ex.ToString()); } this._em.AddToWidgets(newWidget); }
//------------------------------------------------------------------------------------------ //------------------------------------------------------------------------------------------ private ActiveBoard _LoadBoard(int id) { ActiveBoard newBoard = new ActiveBoard(); var res = (from d in this._em.Boards where d.Id == id select d).ToList(); if (res.Count() < 1) { return(null); } Board b = res[0]; /* ii salvam entitatea*/ newBoard.BoardEntity = b; /* adaugam layers din bd */ var res1 = (from d in this._em.Layers where d.BoardId == b.Id select d).ToList(); newBoard.LayerStack = new List <ActiveLayer>(res1.Count); foreach (Layer l in res1) { ActiveLayer newLayer = new ActiveLayer(); newLayer.LayerEntity = l; newLayer.Id = l.LayerId; newLayer.Name = l.Name; newBoard.Layers.Add(l.LayerId, newLayer); if (l.Order > newBoard.LayerStack.Count) { newBoard.LayerStack.Add(newLayer); } else { newBoard.LayerStack.Insert(l.Order, newLayer); } } /* adaugam widgeturile pentru fiecare layer*/ foreach (KeyValuePair <int, ActiveLayer> activeLayerPair in newBoard.Layers) { var res2 = (from d in this._em.Widgets where d.LayerId == activeLayerPair.Key select d).ToList(); activeLayerPair.Value.WidgetsStack = new List <ActiveWidget>(res2.Count); foreach (Widget w in res2) { ActiveWidget newWidget = new ActiveWidget(); newWidget.WidgetEntity = w; newWidget.WidgetId = w.WidgetId; newWidget.Type = w.Type; newWidget.Data = w.Data; newWidget.Name = w.Name; try { activeLayerPair.Value.Widgets.Add(newWidget.WidgetId, newWidget); if (w.Order > activeLayerPair.Value.WidgetsStack.Count) { activeLayerPair.Value.WidgetsStack.Add(newWidget); } else { activeLayerPair.Value.WidgetsStack.Insert(w.Order, newWidget); } } catch (Exception ex) { Console.WriteLine(ex.ToString()); } } } /* adaugam userii care au drepturi asupra boardului*/ var res3 = (from d in this._em.UserRights where d.BoardId == id select d).ToList(); foreach (UserRight ur in res3) { ActiveUser u = new ActiveUser(); u.Username = ur.User; newBoard.UsersTable.Add(u.Username, u); } /* adaugam noul board incarcat in lista activa*/ this._activeBoards.Add(b.Id, newBoard); return(newBoard); }
//------------------------------------------------------------------------------------------ //------------------------------------------------------------------------------------------ /*public void AddWidget(ActiveWidget widget) { * this.Widgets[widget.WidgetId] = widget; * /*adaugam in coada liste - * this.WidgetsStack[widget.Order] = widget; * }*/ //------------------------------------------------------------------------------------------ //------------------------------------------------------------------------------------------ public void RemoveWidget(ActiveWidget widget) { this.Widgets.Remove(widget.WidgetId); this.WidgetsStack.Remove(widget); }