示例#1
0
        public static List <GXEvent> ToGXEvents(this IEnumerable <Event> events, int accId)
        {
            var result = new List <GXEvent>();

            foreach (var e in events)
            {
                var startDateTime = (e.Start.DateTimeRaw != null) ? DateTimeOffset.Parse(e.Start.DateTimeRaw)
                                                                                                : (DateTimeOffset?)null;
                var endDateTime = (e.End.DateTimeRaw != null) ? DateTimeOffset.Parse(e.End.DateTimeRaw)
                                                                                            : (DateTimeOffset?)null;
                var gxEvent = new GXEvent
                {
                    AID       = accId,
                    GID       = e.Id,
                    Location  = e.Location,
                    StartDate = startDateTime.HasValue ? startDateTime.Value.Date
                                        : DateTime.ParseExact(e.Start.Date, "yyyy-MM-dd", CultureInfo.InvariantCulture),
                    StartDateTime = startDateTime,
                    EndDate       = endDateTime.HasValue ? endDateTime.Value.Date
                                        : DateTime.ParseExact(e.End.Date, "yyyy-MM-dd", CultureInfo.InvariantCulture),
                    EndDateTime = endDateTime,
                    Summary     = e.Summary,
                    Description = e.Description,
                    ColorId     = (e.ColorId != null) ? byte.Parse(e.ColorId) : (byte)1
                };
                result.Add(gxEvent);
            }
            return(result);
        }
示例#2
0
        public async Task AddEvent(GXEvent ev, int accId)
        {
            var account = _db.Accounts.Find(accId);

            account.GXEvents.Add(ev);
            _db.GXEvents.Add(ev);
            await _db.SaveChangesAsync();
        }
示例#3
0
 private void SendModifyEventMsg(EventModifyAction action)
 {
     Messenger.Base.Send(new ModifyEventMsg
     {
         Action           = action,
         SaveChangeOnline = SaveChangeOnline,
         Event            = Event
     });
     _originalEvent = new GXEvent(Event);
 }
示例#4
0
 private void OnEventToEditReceived(GXEvent ev)
 {
     if (ev != null)
     {
         Event          = new GXEvent(ev);
         _originalEvent = new GXEvent(Event);
         ActionName     = "Edit event";
         if (ev.Account != null && ev.Account.Gmail.Contains("@gmail.com"))
         {
             Account          = ev.Account.Gmail;
             SaveChangeOnline = true;
         }
     }
 }
示例#5
0
        public async Task UpdateEvent(GXEvent newEvent, int id)
        {
            var eventToUpdate = _db.GXEvents.Find(id);

            if (eventToUpdate != null)
            {
                eventToUpdate.Summary     = newEvent.Summary;
                eventToUpdate.StartDate   = newEvent.StartDate;
                eventToUpdate.EndDate     = newEvent.EndDate;
                eventToUpdate.Location    = newEvent.Location;
                eventToUpdate.Description = newEvent.Description;
                eventToUpdate.ColorId     = newEvent.ColorId;
                await _db.SaveChangesAsync();
            }
        }
示例#6
0
        public async Task EventDb_InsertWithoutReqCol_ThrowException()
        {
            var missingSummaryEv = new GXEvent
            {
                StartDate = DateTime.Now,
                EndDate   = DateTime.Now.AddHours(1)
            };

            try
            {
                await _service.AddEvent(missingSummaryEv, 1);
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.ToString());
            }
        }
示例#7
0
 public void InitModel()
 {
     Event = new GXEvent
     {
         AID       = 1,
         StartDate = DateTime.Now,
         EndDate   = DateTime.Now.AddDays(1),
         ColorId   = 1
     };
     _originalEvent   = new GXEvent(Event);
     LoggedIn         = _dbs.GetAvailableAccounts().Count > 1;
     SaveChangeOnline = false;
     ActionName       = "Create event";
     Account          = "Local";
     Status           = new ModifyEventStatusMsg {
         Success = false,
         Deleted = false,
         Error   = null
     };
     EventModified = false;
 }
示例#8
0
        public static Event ToEvent(this GXEvent e)
        {
            DateTimeZone tz = DateTimeZoneProviders.Tzdb.GetSystemDefault();

            return(new Event
            {
                Id = e.GID,
                Location = e.Location,
                Start = new EventDateTime
                {
                    DateTimeRaw = e.StartDate.ToString("yyyy-MM-dd'T'HH:mm:ss"),
                    TimeZone = tz.ToString()
                },
                End = new EventDateTime
                {
                    DateTimeRaw = e.EndDate.ToString("yyyy-MM-dd'T'HH:mm:ss"),
                    TimeZone = tz.ToString()
                },
                Summary = e.Summary,
                Description = e.Description,
                ColorId = e.ColorId.ToString()
            });
        }
示例#9
0
        /// <summary>
        /// Start listen events.
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        public GXEventsRegisterResponse Post(GXEventsRegisterRequest request)
        {
            if (request.SessionListener.Equals(Guid.Empty) ||
                request.Instance.Equals(Guid.Empty))
            {
                throw new Exception("Listener Guid is empty.");
            }
            if (request.Actions == Actions.None && request.Targets == ActionTargets.None)
            {
                return(new GXEventsRegisterResponse());
            }
            IAuthSession s          = this.GetSession(false);
            long         id         = 0;
            bool         superAdmin = false;
            Guid         guid       = request.DataCollectorGuid;

            //Guid is set if DC is retreaving new tasks.
            if (long.TryParse(s.Id, out id))
            {
                superAdmin = GuruxAMI.Server.GXBasicAuthProvider.IsSuperAdmin(s);
            }
            else
            {
                if (request.DataCollectorGuid.Equals(Guid.Empty))
                {
                    throw new Exception("Data collector Guid is empty.");
                }
            }
            AppHost host = this.ResolveService <AppHost>();
            //Check that there are no several DCs with same Guid.
            //Note! This might happend when DC is restarted wrong.
            //For this reason we are only give a warning.
            List <GXEventsItem> events = new List <GXEventsItem>();

            if (host.IsDCRegistered(guid))
            {
                lock (Db)
                {
                    GXAmiSystemError e = new GXAmiSystemError(1, ActionTargets.SystemError, Actions.State, new Exception("Data collector already exists."));
                    Db.Insert <GXAmiSystemError>(e);
                    events.Add(new GXEventsItem(ActionTargets.SystemError, Actions.Add, e));
                }
            }
            ulong   mask = (ulong)(((int)request.Targets << 16) | (int)request.Actions);
            GXEvent e1   = new GXEvent(id, superAdmin, guid, request.Instance, mask);

            host.AddEvent(request.SessionListener, e1);
            if (guid != Guid.Empty)
            {
                //Notify that DC is connected.
                lock (Db)
                {
                    GXAmiDataCollector dc = Db.Select <GXAmiDataCollector>(q => q.Guid == guid)[0];
                    dc.State = Gurux.Device.DeviceStates.Connected;
                    Db.UpdateOnly(dc, p => p.StatesAsInt, p => p.Id == dc.Id);
                    events.Add(new GXEventsItem(ActionTargets.DataCollector, Actions.State, dc));
                }
                host.SetEvents(Db, this.Request, 0, events);
            }
            return(new GXEventsRegisterResponse());
        }