Exemple #1
0
        public async Task <IList <xDTO.State> > GetAllPagesStatesAsync(
            string sort = null)
        {
            List <IFilterCriterion> filterCriteria  = new List <IFilterCriterion>();
            IPageDataRequest        pageDataRequest = new PageDataRequest(filterCriteria: filterCriteria, sort: sort, page: 1, pageSize: 100);

            return(await GetAllPageDataResultsAsync(pageDataRequest, GetStatesAsync));
        }
Exemple #2
0
        public async Task <IHttpCallResultCGHT <IPageDataT <IList <xDTO.Country> > > > GetCountriesAsync(
            string sort = null, int page = 1, int pageSize = 100)
        {
            List <IFilterCriterion> filterCriteria = new List <IFilterCriterion>();

            IPageDataRequest pageDataRequest = new PageDataRequest(filterCriteria: filterCriteria, sort: sort, page: page, pageSize: pageSize);

            return(await GetCountriesAsync(pageDataRequest));
        }
Exemple #3
0
        public override async Task <IList <City> > GetCities(Guid stateId)
        {
            var         stopwatch = Stopwatch.StartNew();
            List <City> retVal    = new List <City>();

            IList <IFilterCriterion> filter = new List <IFilterCriterion>()
            {
                new FilterCriterion()
                {
                    FieldName      = nameof(xDTO.City.StateId),
                    FilterOperator = Constants.OPERATOR_ISEQUALTO,
                    Value          = stateId
                }
            };

            IPageDataRequest pageDataRequest = new PageDataRequest()
            {
                Page           = 1,
                FilterCriteria = filter,
                PageSize       = 100,
                Sort           = nameof(City.Name)
            };

            var callResult = await DataService.GetCitiesAsync(pageDataRequest);

            while (callResult.IsSuccessStatusCode)
            {
                var pageData = callResult.Data;
                retVal.AddRange(pageData.Data.Select(x => new City()
                {
                    Name = x.Name, CityId = x.CityId
                }));

                if (pageDataRequest.Page >= pageData.TotalPages)
                {
                    break;
                }
                else
                {
                    pageDataRequest.Page++; // Get the next page.
                    callResult = await DataService.GetCitiesAsync(pageDataRequest);
                }
            }

            if (!callResult.IsSuccessStatusCode)
            {
                Log.LogWarning(exception: callResult.Exception, message: "Failure occurred while retrieving city data from the API service. StatusCode: {StatusCode}  RequestUri: {RequestUri}", callResult.StatusCode, callResult.RequestUri);
            }

            stopwatch.Stop();
            Log.LogInformation("Executed {ClassName}.{MethodName} in {Elapsed} Milliseconds", nameof(CitySelectorApiService), MethodBase.GetCurrentMethod().Name, stopwatch.Elapsed.TotalMilliseconds);

            return(retVal);
        }
Exemple #4
0
        public async Task <IHttpCallResultCGHT <IPageDataT <List <BingoInstance> > > > GetInstancesAndEventsByMeetingId(Guid meetingId, DateTime?minUpdatedDate, bool?isDeleted, string sort = null, int page = 1, int pageSize = 100)
        {
            List <IFilterCriterion> filterCriteria = new List <IFilterCriterion>();

            IFilterCriterion filterCriterion = new FilterCriterion
            {
                FieldName      = nameof(BingoInstance.MeetingId),
                FieldType      = "Guid",
                FilterOperator = Constants.OPERATOR_ISEQUALTO,
                Value          = meetingId
            };

            filterCriteria.Add(filterCriterion);

            if (minUpdatedDate.HasValue)
            {
                filterCriterion = new FilterCriterion
                {
                    FieldName      = nameof(BingoInstance.UpdatedDate),
                    FieldType      = "DateTime?",
                    FilterOperator = Constants.OPERATOR_ISGREATERTHAN,
                    Value          = minUpdatedDate
                };
                filterCriteria.Add(filterCriterion);
            }

            if (minUpdatedDate.HasValue)
            {
                filterCriterion = new FilterCriterion
                {
                    FieldName      = nameof(BingoInstance.IsDeleted),
                    FieldType      = "bool?",
                    FilterOperator = Constants.OPERATOR_ISEQUALTO,
                    Value          = isDeleted
                };
                filterCriteria.Add(filterCriterion);
            }

            IPageDataRequest pageDataRequest = new PageDataRequest(filterCriteria: filterCriteria, sort: sort, page: page, pageSize: pageSize);
            List <string>    filter          = BuildFilter(pageDataRequest.FilterCriteria);

            return(await SerializationHelper.Instance.SerializeCallResultsGet <List <BingoInstance> >(Log, GetClient(),
                                                                                                      $"{ExecutionContext.BaseWebApiUrl}GetInstancesAndEventsByMeetingId", filter, page : pageDataRequest.Page, pageSize : pageDataRequest.PageSize));
        }
Exemple #5
0
        public async Task <IList <xDTO.User> > GetAllPagesUsersAsync(
            DateTime?minUpdatedDate = null, string sort = null)
        {
            List <IFilterCriterion> filterCriteria = new List <IFilterCriterion>();

            if (minUpdatedDate.HasValue)
            {
                IFilterCriterion filterCriterion = new FilterCriterion();
                filterCriterion.FieldName      = "UpdatedDate";
                filterCriterion.FieldType      = "DateTime?";
                filterCriterion.FilterOperator = "IsGreaterThan";
                filterCriterion.Value          = minUpdatedDate;
                filterCriteria.Add(filterCriterion);
            }

            IPageDataRequest pageDataRequest = new PageDataRequest(filterCriteria: filterCriteria, sort: sort, page: 1, pageSize: 100);

            return(await GetAllPageDataResultsAsync(pageDataRequest, GetUsersAsync));
        }
Exemple #6
0
        public async Task <IHttpCallResultCGHT <IPageDataT <IList <xDTO.Resource> > > > GetResourcesAsync(
            DateTime?minUpdatedDate = null, string sort = null, int page = 1, int pageSize = 100)
        {
            List <IFilterCriterion> filterCriteria = new List <IFilterCriterion>();

            if (minUpdatedDate.HasValue)
            {
                IFilterCriterion filterCriterion = new FilterCriterion();
                filterCriterion.FieldName      = "UpdatedDate";
                filterCriterion.FieldType      = "DateTime?";
                filterCriterion.FilterOperator = "IsGreaterThan";
                filterCriterion.Value          = minUpdatedDate;
                filterCriteria.Add(filterCriterion);
            }


            IPageDataRequest pageDataRequest = new PageDataRequest(filterCriteria: filterCriteria, sort: sort, page: page, pageSize: pageSize);

            return(await GetResourcesAsync(pageDataRequest));
        }
        public async Task InsertAllDataCleanLocalDB(Guid userId)
        {
            try
            {
                //we want all of the bingo contents records
                var bingoContents = await _webAPIDataService.GetAllPagesBingoContentsAsync(null);

                int numBingoContentsInserted = await _asyncConnection.InsertAllAsync(bingoContents.Select(x => x.ToModelData()).ToList());

                _log.Debug($"Inserted {numBingoContentsInserted} bingo contents records", LogMessageType.Instance.Info_Synchronization);

                //Load Types
                var notificationMethodTypes = await _webAPIDataService.GetAllPagesNotificationMethodTypesAsync();

                int numNotificationMethodTypesInserted = await _asyncConnection.InsertAllAsync(notificationMethodTypes.Select(x => x.ToModelData()).ToList());

                _log.Debug($"Inserted {numNotificationMethodTypesInserted} notification method type records", LogMessageType.Instance.Info_Synchronization);

                var bingoFrequencyTypes = await _webAPIDataService.GetAllPagesFrequencyTypesAsync();

                int numBingoFrequencyTypesInserted = await _asyncConnection.InsertAllAsync(bingoFrequencyTypes.Select(x => x.ToModelData()).ToList());

                _log.Debug($"Inserted {numBingoFrequencyTypesInserted} bingo frequency type records", LogMessageType.Instance.Info_Synchronization);

                var bingoInstanceEventTypes = await _webAPIDataService.GetAllPagesBingoInstanceEventTypesAsync();

                int numBingoInstanceEventTypesInserted = await _asyncConnection.InsertAllAsync(bingoInstanceEventTypes.Select(x => x.ToModelData()).ToList());

                _log.Debug($"Inserted {numBingoInstanceEventTypesInserted} bingo instance event type records", LogMessageType.Instance.Info_Synchronization);

                //load All Users - will get rid of this when there is better support for companies
                var bingoPlayers = await _webAPIDataService.GetAllPagesUsersAsync();

                int numBingoPlayersInserted = await _asyncConnection.InsertAllAsync(bingoPlayers.Select(x => x.ToModelData()).ToList());

                _log.Debug($"Inserted {numBingoPlayersInserted} bingo player records", LogMessageType.Instance.Info_Synchronization);

                //we only want meetings for which our user is involved
                var meetingAndAttendeesPageData = await _webAPIDataService.GetMeetingsAndAttendeesByUserId(userId, null, null);

                if (meetingAndAttendeesPageData.IsSuccessStatusCode)
                {
                    List <DTO.BB.Meeting> meetingsAndAttendees = meetingAndAttendeesPageData.Data.Data;

                    //not inserting children here, only meetings
                    int numMeetingsInserted = await _asyncConnection.InsertAllAsync(meetingsAndAttendees.Select(x => x.ToModelData()).ToList());

                    _log.Debug($"Inserted {numMeetingsInserted} meeting records", LogMessageType.Instance.Info_Synchronization);

                    //inserting meeting attendees
                    List <DTO.BB.MeetingAttendee> attendeesDTO = meetingsAndAttendees.SelectMany(x => x.MeetingAttendees).Distinct().ToList();
                    int numMeetingAttendeesInserted            = await _asyncConnection.InsertAllAsync(attendeesDTO.Select(v => v.ToModelData()).Distinct().ToList());

                    _log.Debug($"Inserted {numMeetingAttendeesInserted} meeting attendee records", LogMessageType.Instance.Info_Synchronization);

                    //insert or update the users
                    List <DTO.BB.User> usersDTO = attendeesDTO.Select(x => x.User_UserId).Distinct(new ModelData.Extensions.UserSameUser()).ToList();
                    var usersModelData          = usersDTO.Select(x => x.ToModelData()).ToList();
                    int numUsersInserted        = 0;
                    foreach (var u in usersModelData)
                    {
                        if (1 == await _asyncConnection.InsertOrReplaceAsync(u))
                        {
                            numUsersInserted++;
                        }
                    }
                    _log.Debug($"Inserted {numUsersInserted} user records", LogMessageType.Instance.Info_Synchronization);

                    //insert or update the instances
                    var instances            = meetingsAndAttendees.SelectMany(x => x.BingoInstances).ToList();
                    int numInstancesInserted = await _asyncConnection.InsertAllAsync(instances.Select(x => x.ToModelData()).ToList());

                    _log.Debug($"Inserted {numInstancesInserted} instance records", LogMessageType.Instance.Info_Synchronization);

                    foreach (var instance in instances)
                    {
                        IList <IFilterCriterion> filterCriteria = new List <IFilterCriterion>()
                        {
                            new FilterCriterion()
                            {
                                FieldName      = nameof(DTO.BB.BingoInstanceContent.BingoInstanceId),
                                FieldType      = "Guid",
                                FilterOperator = cghConstants.OPERATOR_ISEQUALTO,
                                Value          = instance.BingoInstanceId
                            }
                        };

                        PageDataRequest pdr = new PageDataRequest(filterCriteria);

                        var instanceContentPageData = await _webAPIDataService.GetBingoInstanceContentsAsync(pdr);

                        if (instanceContentPageData.IsSuccessStatusCode)
                        {
                            //bingo instance contents
                            var bingoInstanceContents            = instanceContentPageData.Data.Data;
                            int numBingoInstanceContentsInserted = await _asyncConnection.InsertAllAsync(bingoInstanceContents.Select(x => x.ToModelData()).ToList());

                            _log.Debug($"Inserted {numBingoInstanceContentsInserted} bingo instance contents records", LogMessageType.Instance.Info_Synchronization);

                            //bingo instance events
                            var bingoInstanceEvents            = bingoInstanceContents.SelectMany(x => x.BingoInstanceEvents).Distinct().ToList();
                            int numBingoInstanceEventsInserted = await _asyncConnection.InsertAllAsync(bingoInstanceEvents.Select(x => x.ToModelData()).ToList());

                            _log.Debug($"Inserted {numBingoInstanceEventsInserted} bingo instance event records", LogMessageType.Instance.Info_Synchronization);
                        }
                    }
                }

                //just load all companies for right now... might not even need these at all
                var bingoCompanies = await _webAPIDataService.GetAllPagesCompaniesAsync(null);

                int numBingoCompaniesInserted = await _asyncConnection.InsertAllAsync(bingoCompanies.Select(x => x.ToModelData()).ToList());

                _log.Debug($"Inserted {numBingoCompaniesInserted} bingo company records", LogMessageType.Instance.Info_Synchronization);

                /*var meetingSchedules = await _webAPIDataService.GetAllPagesMeetingSchedulesAsync(null);
                 * int numMeetingSchedulesInserted = await _asyncConnection.InsertAllAsync(meetingSchedules.Select(x => x.ToModelData()).ToList());
                 * _log.Debug($"Inserted {numMeetingSchedulesInserted} meeting schedule records", LogMessageType.Instance.Info_Synchronization);
                 *
                 * var notificationRules = await _webAPIDataService.GetAllPagesNotificationRulesAsync();
                 * int numNotificationRulesInserted = await _asyncConnection.InsertAllAsync(notificationRules.Select(x => x.ToModelData()).ToList());
                 * _log.Debug($"Inserted {numNotificationRulesInserted} notification rule records", LogMessageType.Instance.Info_Synchronization);
                 *
                 * var recurrenceRules = await _webAPIDataService.GetAllPagesRecurrenceRulesAsync();
                 * int numRecurrenceRulesInserted = await _asyncConnection.InsertAllAsync(recurrenceRules.Select(x => x.ToModelData()).ToList());
                 * _log.Debug($"Inserted {numRecurrenceRulesInserted} recurrence rule records", LogMessageType.Instance.Info_Synchronization);
                 */
            }
            catch (Exception ex)
            {
                _log.Error("DataLoadService: Loading Error", LogMessageType.Instance.Exception_Synchronization, ex: ex);
            }
        }