public int UpdateDeleteOrReorderElement([FromBody] ElementSettingsModel settings, int presentationId, int slideId, int?id = null) { int ret = 0, firstId = -1, secondId = -1, firstOrder = -1, secondOrder = -1; if (id.HasValue && base.ControllerContext.Request.Method == HttpMethod.Delete) { DeleteElement(presentationId, slideId, id.Value, HttpContext.Current.Request.QueryString["also"]); } else if (base.ControllerContext.Request.Method == HttpMethod.Put && base.ControllerContext.Request.RequestUri.AbsolutePath.TrimEnd('/').EndsWith("/reoder", System.StringComparison.OrdinalIgnoreCase) && int.TryParse(HttpContext.Current.Request.QueryString["firstId"], out firstId) && int.TryParse(HttpContext.Current.Request.QueryString["secondId"], out secondId)) { int.TryParse(HttpContext.Current.Request.QueryString["firstOrder"], out firstOrder); int.TryParse(HttpContext.Current.Request.QueryString["secondOrder"], out secondOrder); ReoderElements(presentationId, slideId, firstId, secondId, firstOrder, secondOrder); } else { ret = UpdateSettings(settings, presentationId, slideId, id); } return(ret); }
public int UpdateSettings([FromBody] ElementSettingsModel settings, int presentationId, int slideId, int?id = null) { int ret = 0; Slide s = null; Element e = null; Presentation p = null; if (settings != null && presentationId > 0) { p = base.Service.Read(presentationId); if (p != null) { s = p.Slides.FirstOrDefault(candidate => candidate.Id == slideId); if (s != null) { e = id.HasValue ? s.Elements.FirstOrDefault(candidate => candidate.Id == id.Value) : new Element(); if (e != null) { e.Name = settings.Name; e.Position = settings.Position; e.Type = settings.Type; e.Order = settings.Order; e.NavigateSlideId = settings.NavigateSlideId; e.RealtimeData = settings.RealtimeData; e.Offset = settings.Offset; if (e.Offset == null) { e.Offset = new ElementOffset(); } e.Properties.Clear(); if (settings.Properties != null) { foreach (var prop in settings.Properties) { e.Properties.Add(new ElementProperty() { Name = prop.Name, Value = prop.Value }); } } if (e.Id <= 0) { s.Elements.Add(e); } base.Service.CreateOrUpdate(p); ret = s.Elements.First(candidate => candidate == e).Id; if (e.Type == ElementType.Widget) { NotifyAboutWidgetUsage(presentationId, slideId, e); } } } } } return(ret); }
public void BulkUpdateElementPosition([FromBody] ElementSettingsModel settings, int presentationId, int slideId, int id, string also) { Slide s = null; Presentation p = null; IEnumerable <Element> elements = null; IDictionary <int, Tuple <double, double> > positionMap = new Dictionary <int, Tuple <double, double> >(); string[] components = (also ?? string.Empty).Split(new char[] { '#' }, StringSplitOptions.RemoveEmptyEntries); List <Tuple <int, double, double> > positions = components.Select(c => { string[] parts = c.Split(new char[] { ':' }, StringSplitOptions.RemoveEmptyEntries); return(new Tuple <int, double, double>(int.Parse(parts[0]), double.Parse(parts[1]), double.Parse(parts[2]))); }).ToList(); positions.Add(new Tuple <int, double, double>(id, settings.Offset.Left, settings.Offset.Top)); foreach (var pos in positions) { if (!positionMap.ContainsKey(pos.Item1)) { positionMap.Add(pos.Item1, new Tuple <double, double>(pos.Item2, pos.Item3)); } } p = base.Service.Read(presentationId); if (p != null) { s = p.Slides.FirstOrDefault(candidate => candidate.Id == slideId); if (s != null && s.Elements != null) { elements = s.Elements.Where(e => positionMap.ContainsKey(e.Id)); if (elements.Any()) { foreach (var elm in elements) { elm.Position = ElementPosition.Free; if (elm.Offset == null) { elm.Offset = new ElementOffset(); } elm.Offset.Left = positionMap[elm.Id].Item1; elm.Offset.Top = positionMap[elm.Id].Item2; if (elm.Offset.Viewport == null) { elm.Offset.Viewport = new ElementOffsetViewport(); } elm.Offset.Viewport.Width = settings.Offset.Viewport.Width; elm.Offset.Viewport.Height = settings.Offset.Viewport.Height; } base.Service.CreateOrUpdate(p); } } } }