AppActs.API.DataMapper.EventMapper.Save C# (CSharp) Method

Save() public method

public Save ( AppUsageDurationSummary entity ) : void
entity AppActs.API.Model.Event.AppUsageDurationSummary
return void
        public void Save(AppUsageDurationSummary entity)
        {
            try
            {
                IMongoQuery query = Query.And
                    (
                        Query<AppUsageSummary>.EQ<DateTime>(mem => mem.Date, entity.Date),
                        Query<AppUsageSummary>.EQ<Guid>(mem => mem.ApplicationId, entity.ApplicationId),
                        Query<AppUsageSummary>.EQ<string>(mem => mem.Version, entity.Version),
                        Query<AppUsageSummary>.EQ<PlatformType>(mem => mem.PlatformId, entity.PlatformId)
                    );

                IMongoUpdate update = Update<AppUsageDurationSummary>
                    .SetOnInsert(x => x.Version, entity.Version)
                    .SetOnInsert(x => x.Date, entity.Date)
                    .SetOnInsert(x => x.ApplicationId, entity.ApplicationId)
                    .SetOnInsert(x => x.PlatformId, entity.PlatformId)
                    //len
                    .Inc(mem => mem.LengthGroup._10sec, entity.LengthGroup._10sec)
                    .Inc(mem => mem.LengthGroup._20sec, entity.LengthGroup._20sec)
                    .Inc(mem => mem.LengthGroup._30sec, entity.LengthGroup._30sec)
                    .Inc(mem => mem.LengthGroup._1min, entity.LengthGroup._1min)
                    .Inc(mem => mem.LengthGroup._2min, entity.LengthGroup._2min)
                    .Inc(mem => mem.LengthGroup._4min, entity.LengthGroup._4min)
                    .Inc(mem => mem.LengthGroup._8min, entity.LengthGroup._8min)
                    .Inc(mem => mem.LengthGroup._16min, entity.LengthGroup._16min)
                    .Inc(mem => mem.LengthGroup._32min, entity.LengthGroup._32min)
                    .Inc(mem => mem.LengthGroup._1hr, entity.LengthGroup._1hr)
                    .Inc(mem => mem.LengthGroup.Over1hr, entity.LengthGroup.Over1hr)
                    .Inc(mem => mem.Count, entity.Count);

                this.GetCollection<AppUsageDurationSummary>().FindAndModify(query, SortBy.Descending("Date"), update, false, true);
                this.GetCollection<AppUsageDurationSummary>().EnsureIndex(IndexKeys.Descending("Date"));
            }
            catch (Exception ex)
            {
                throw new DataAccessLayerException(ex);
            }
        }

Same methods

EventMapper::Save ( AppUsageSummary entity ) : void
EventMapper::Save ( ContentLoadSummary entity ) : void
EventMapper::Save ( DeviceAppLastScreen deviceAppLastScreen ) : void
EventMapper::Save ( Event entity ) : void
EventMapper::Save ( EventSummary entity ) : void
EventMapper::Save ( ScreenRouteSummary entity ) : void
EventMapper::Save ( ScreenSummary entity ) : void

Usage Example

        public void Save_AppUsageDurationSummary_ValuesIncrement()
        {
            EventMapper eventMapper = new EventMapper(this.client, this.database);
            Guid applicationId = Guid.NewGuid();
            Guid deviceId = Guid.NewGuid();

            AppUsageDurationSummary expected = new AppUsageDurationSummary()
            {
                ApplicationId = applicationId,
                Count = 2,
                Date = date,
                PlatformId = platform,
                Version = version,
                LengthGroup = new SessionLengthGroup()
                {
                    _20sec = 2
                }
            };

            Event eventItem = new Event()
            {
                ApplicationId = applicationId,
                Date = date,
                Version = version,
                PlatformId = platform,
                DateCreatedOnDevice = dateCreatedOnDevice,
                ScreenName = "someScreen",
                EventName = "someEvent",
                DeviceId = deviceId,
                DateCreated = date,
                Length = 20000
            };

            AppUsageDurationSummary summary = new AppUsageDurationSummary(eventItem);

            eventMapper.Save(summary);
            eventMapper.Save(summary);

            IMongoQuery query = Query.And
                (
                    Query<AppUsageSummary>.EQ<DateTime>(mem => mem.Date, date),
                    Query<AppUsageSummary>.EQ<Guid>(mem => mem.ApplicationId, applicationId),
                    Query<AppUsageSummary>.EQ<string>(mem => mem.Version, version),
                    Query<AppUsageSummary>.EQ<PlatformType>(mem => mem.PlatformId, platform)
                );

            AppUsageDurationSummary actual =
                this.GetCollection<AppUsageDurationSummary>().FindOne(query);

            actual.ShouldHave().AllPropertiesBut(x => x.Id)
                .IncludingNestedObjects().EqualTo(expected);
        }
All Usage Examples Of AppActs.API.DataMapper.EventMapper::Save