public InventarioMant()
 {
     InitializeComponent();
     MostrarInv();
     EnableButtons();
     Colores();
     Titulo();
     _apiPost = new ApiPost();
     _apiPut  = new ApiPut();
 }
        /// <summary>
        /// Generic Handler for the MockAPIs
        /// </summary>
        private async Task <ApiResponse> ProcessEntity <T>(ApiPost <T> entity) where T : CsvBaseObject
        {
            Logger.Here().LogInformation($"Recieved {entity.Status} for {entity.EntityType}: {JsonConvert.SerializeObject(entity)}");

            // simulate time to respond
            await Task.Delay(100);

            ApiResponse response = new ApiResponse
            {
                Success  = true,
                TargetId = entity.TargetId ?? System.Guid.NewGuid().ToString(),
            };

            Logger.Here().LogInformation($"Response to {entity.EntityType}: {JsonConvert.SerializeObject(response)}");

            return(response);
        }
Example #3
0
        public static User FromMetaPost(
            ITextHelpers textHelpers,
            IResourceCacheService resourceCacheService,
            ApiPost <MetaPostContent> metaPost)
        {
            Ensure.Argument.IsNotNull(metaPost, nameof(metaPost));

            var dateNow     = DateTime.UtcNow;
            var metaContent = metaPost.Content;

            return(new User(resourceCacheService)
            {
                Id = textHelpers.GenerateUniqueId(),
                CreatedAt = dateNow,

                OriginalCreatedAt = dateNow,

                Entity = metaContent.Entity
            });
        }
Example #4
0
        public List <ApiPost> Get()
        {
            var getPost  = new List <ApiPost>();
            var postData = _postService.GetAll().ToList();

            if (postData != null)
            {
                foreach (var item in postData)
                {
                    var apiPost = new ApiPost();
                    apiPost.Title      = item.Title;
                    apiPost.UserId     = item.UserId;
                    apiPost.CategoryId = item.CategoryId;
                    apiPost.ClickCount = item.ClickCount;
                    getPost.Add(apiPost);
                }
            }

            return(getPost);
        }
Example #5
0
        private async Task ApplyLine <T>(DistrictRepo repo, DataSyncLine line) where T : CsvBaseObject
        {
            switch (line.LoadStatus)
            {
            case LoadStatus.None:
                Logger.Here().LogWarning($"None should not be flagged for Sync: {line.RawData}");
                return;
            }

            ApiPostBase data;
            var         apiManager = new ApiManager(repo.District.LmsApiBaseUrl)
            {
                ApiAuthenticator = ApiAuthenticatorFactory.GetApiAuthenticator(repo.District.LmsApiAuthenticatorType,
                                                                               repo.District.LmsApiAuthenticationJsonData)
            };

            if (line.Table == nameof(CsvEnrollment))
            {
                var enrollment = new ApiEnrollmentPost(line.RawData);

                CsvEnrollment csvEnrollment = JsonConvert.DeserializeObject <CsvEnrollment>(line.RawData);
                DataSyncLine  cls           = repo.Lines <CsvClass>().SingleOrDefault(l => l.SourcedId == csvEnrollment.classSourcedId);
                DataSyncLine  usr           = repo.Lines <CsvUser>().SingleOrDefault(l => l.SourcedId == csvEnrollment.userSourcedId);

                var map = new EnrollmentMap
                {
                    classTargetId = cls?.TargetId,
                    userTargetId  = usr?.TargetId,
                };

                // this provides a mapping of LMS TargetIds (rather than sourcedId's)
                enrollment.EnrollmentMap = map;
                enrollment.ClassTargetId = cls?.TargetId;
                enrollment.UserTargetId  = usr?.TargetId;

                // cache map in the database (for display/troubleshooting only)
                line.EnrollmentMap = JsonConvert.SerializeObject(map);

                data = enrollment;
            }
            else if (line.Table == nameof(CsvClass))
            {
                var classCsv = JsonConvert.DeserializeObject <CsvClass>(line.RawData);

                // Get course & school of this class
                var course    = repo.Lines <CsvCourse>().SingleOrDefault(l => l.SourcedId == classCsv.courseSourcedId);
                var courseCsv = JsonConvert.DeserializeObject <CsvCourse>(course.RawData);

                // Get Term of this class
                // TODO: Handle multiple terms, termSourceIds can be a comma separated list of terms.
                var term = repo.Lines <CsvAcademicSession>().SingleOrDefault(s => s.SourcedId == classCsv.termSourcedIds);

                var org = repo.Lines <CsvOrg>().SingleOrDefault(o => o.SourcedId == classCsv.schoolSourcedId);

                var _class = new ApiClassPost(line.RawData)
                {
                    CourseTargetId = course.TargetId,
                    SchoolTargetId = org.TargetId,
                    TermTargetId   = string.IsNullOrWhiteSpace(term.TargetId) ? "2018" : term.TargetId,       //TODO: Add a default term setting in District Entity
                    Period         = classCsv.periods
                };

                data = _class;
            }
            else
            {
                data = new ApiPost <T>(line.RawData);
            }

            data.DistrictId   = repo.District.TargetId;
            data.DistrictName = repo.District.Name;
            data.LastSeen     = line.LastSeen;
            data.SourcedId    = line.SourcedId;
            data.TargetId     = line.TargetId;
            data.Status       = line.LoadStatus.ToString();

            var response = await apiManager.Post(GetEntityEndpoint(data.EntityType.ToLower(), repo), data);

            if (response.Success)
            {
                line.SyncStatus = SyncStatus.Applied;
                if (!string.IsNullOrEmpty(response.TargetId))
                {
                    line.TargetId = response.TargetId;
                }
                line.Error = null;
            }
            else
            {
                line.SyncStatus = SyncStatus.ApplyFailed;
                line.Error      = response.ErrorMessage;

                // The Lms can send false success if the entity already exist. In such a case we read the targetId
                if (!string.IsNullOrEmpty(response.TargetId))
                {
                    line.TargetId = response.TargetId;
                }
            }

            line.Touch();

            repo.PushLineHistory(line, isNewData: false);
        }
Example #6
0
 public async Task <HttpResponseMessage> NewPost([FromBody] ApiPost apiPost)
 {
     return(null);
 }
Example #7
0
 public object OnApiPost(ApiEventArgs e)
 {
     return(ApiPost?.Invoke(this, e));
 }
 public async Task <ApiResponse> Enrollment([FromBody] ApiPost <CsvEnrollment> enrollment)
 {
     return(await ProcessEntity <CsvEnrollment>(enrollment));
 }
 public async Task <ApiResponse> UserEntity([FromBody] ApiPost <CsvUser> user)
 {
     return(await ProcessEntity <CsvUser>(user));
 }
 public async Task <ApiResponse> Class([FromBody] ApiPost <CsvClass> _class)
 {
     return(await ProcessEntity <CsvClass>(_class));
 }
 public async Task <ApiResponse> AcademicSession([FromBody] ApiPost <CsvAcademicSession> academicSession)
 {
     return(await ProcessEntity <CsvAcademicSession>(academicSession));
 }
 public async Task <ApiResponse> Course([FromBody] ApiPost <CsvCourse> course)
 {
     return(await ProcessEntity <CsvCourse>(course));
 }
 public async Task <ApiResponse> Org([FromBody] ApiPost <CsvOrg> org)
 {
     return(await ProcessEntity <CsvOrg>(org));
 }