public bool Save(ViewRoute viewRoute) { bool result = false; RouteManager routeManager = new RouteManager(); try { RealmInstance.Write(() => { var route = !string.IsNullOrEmpty(viewRoute.Id) ? RealmInstance.Find <Route>(viewRoute.Id) : null; if (null == route) { route = string.IsNullOrEmpty(viewRoute.Id) ? new Route() : new Route() { RouteId = viewRoute.Id }; RealmInstance.Add(route); } route.Name = viewRoute.Name; route.Version = viewRoute.Version; route.CreateDate = viewRoute.CreateDate; route.IsShared = viewRoute.IsShared; route.IsPublished = viewRoute.IsPublished; route.IsDeleted = viewRoute.IsDeleted; route.CreatorId = viewRoute.CreatorId; route.ObjVerHash = viewRoute.ObjVerHash; route.ImgFilename = viewRoute.ImgFilename; route.Description = viewRoute.Description; if (!route.ServerSynced.Equals(viewRoute.ServerSynced) && viewRoute.ServerSynced) { route.ServerSyncedDate = DateTimeOffset.Now; } route.ServerSynced = !string.IsNullOrEmpty(viewRoute.ObjVerHash) && viewRoute.ServerSynced; viewRoute.Refresh(route.RouteId); }); result = true; } catch (Exception e) { HandleError.Process("RouteManager", "AddRoute", e, false); } return(result); }
internal string Save(ViewRoutePoint vpoint) { string returnid = string.Empty; RouteManager routeManager = new RouteManager(); vpoint.Version = vpoint.Version == 0 ? 1 : vpoint.Version; if (vpoint.CreateDate.Year == 1) { HandleError.Process("RoutePointManager", "Save", new Exception("CreateDate is empty"), false, $"routePointId:[{vpoint.RoutePointId}]"); //throw new Exception("create date year = 1"); //vpoint.CreateDate = new DateTime(2020,1,1); } try { RealmInstance.Write(() => { RoutePoint point = !string.IsNullOrEmpty(vpoint.Id) ? RealmInstance.Find <RoutePoint>(vpoint.Id) : null; if (point == null) { point = new RoutePoint(); point.RoutePointId = !string.IsNullOrEmpty(vpoint.Id) ? vpoint.Id: point.RoutePointId; point.RouteId = vpoint.RouteId; point.MainRoute = routeManager.GetRouteById(vpoint.RouteId); if (point.MainRoute != null) { point.MainRoute.Points.Add(point);//? } else { HandleError.Process("RoutePointManager", "SavePoint", new Exception($"routeId:{vpoint.RouteId}, pointId:{vpoint.Id}"), false); } RealmInstance.Add(point); } else { //point = _realmInstance.Find<RoutePoint>(vpoint.Id); } if (point.Version != vpoint.Version) { //нужно для того, чтобы синхронизация обнаружила отличия от сервера и проверила версии с последующей отправкой изменений на сервер point.MainRoute.ObjVerHash = string.Empty; } returnid = point.RoutePointId; point.Address = vpoint.Address; point.Description = vpoint.Description; point.Latitude = vpoint.Latitude; point.Longitude = vpoint.Longitude; point.Name = vpoint.Name; point.UpdateDate = DateTime.Now; point.Version = vpoint.Version; point.IsDeleted = vpoint.IsDeleted; point.CreateDate = vpoint.CreateDate; point.MediaObjects.Clear(); foreach (var media in vpoint.MediaObjects) { point.MediaObjects.Add(media); } }); } catch (Exception e) { HandleError.Process("RoutePointManager", "AddRoutePoint", e, false); } return(returnid); }