Example #1
0
        public async Task <PagedResponse <IEnumerable <Entity> > > Handle(GetPositionsQuery request, CancellationToken cancellationToken)
        {
            var validFilter = request;
            var pagination  = request;

            //filtered fields security
            if (!string.IsNullOrEmpty(validFilter.Fields))
            {
                //limit to fields in view model
                validFilter.Fields = _modelHelper.ValidateModelFields <GetPositionsViewModel>(validFilter.Fields);
            }
            if (string.IsNullOrEmpty(validFilter.Fields))
            {
                //default fields from view model
                validFilter.Fields = _modelHelper.GetModelFields <GetPositionsViewModel>();
            }
            // query based on filter
            var entityPositions = await _positionRepository.GetPagedPositionReponseAsync(validFilter);

            var          data        = entityPositions.data;
            RecordsCount recordCount = entityPositions.recordsCount;

            // response wrapper
            return(new PagedResponse <IEnumerable <Entity> >(data, validFilter.PageNumber, validFilter.PageSize, recordCount));
        }
        public async Task <(IEnumerable <Entity> data, RecordsCount recordsCount)> GetPagedPositionReponseAsync(GetPositionsQuery requestParameter)
        {
            var positionNumber = requestParameter.PositionNumber;
            var positionTitle  = requestParameter.PositionTitle;

            var pageNumber = requestParameter.PageNumber;
            var pageSize   = requestParameter.PageSize;
            var orderBy    = requestParameter.OrderBy;
            var fields     = requestParameter.Fields;

            int recordsTotal, recordsFiltered;

            // Setup IQueryable
            var result = _positions
                         .AsNoTracking()
                         .AsExpandable();

            // Count records total
            recordsTotal = await result.CountAsync();

            // filter data
            FilterByColumn(ref result, positionNumber, positionTitle);

            // Count records after filter
            recordsFiltered = await result.CountAsync();

            //set Record counts
            var recordsCount = new RecordsCount
            {
                RecordsFiltered = recordsFiltered,
                RecordsTotal    = recordsTotal
            };

            // set order by
            if (!string.IsNullOrWhiteSpace(orderBy))
            {
                result = result.OrderBy(orderBy);
            }

            // select columns
            if (!string.IsNullOrWhiteSpace(fields))
            {
                result = result.Select <Position>("new(" + fields + ")");
            }
            // paging
            result = result
                     .Skip((pageNumber - 1) * pageSize)
                     .Take(pageSize);

            // retrieve data to list
            var resultData = await result.ToListAsync();

            // shape data
            var shapeData = _dataShaper.ShapeData(resultData, fields);

            return(shapeData, recordsCount);
        }
        public override int GetHashCode()
        {
            var hashCode = 152924670;

            hashCode = hashCode * -1521134295 + base.GetHashCode();
            hashCode = hashCode * -1521134295 + RecordsCount.GetHashCode();
            hashCode = hashCode * -1521134295 + headerField.GetHashCode();
            return(hashCode);
        }
Example #4
0
 public PagedDataTableResponse(T data, int pageNumber, RecordsCount recordsCount)
 {
     this.Draw            = pageNumber;
     this.RecordsFiltered = recordsCount.RecordsFiltered;
     this.RecordsTotal    = recordsCount.RecordsTotal;
     this.Data            = data;
     this.Message         = null;
     this.Succeeded       = true;
     this.Errors          = null;
 }
Example #5
0
        public async Task <PagedDataTableResponse <IEnumerable <Entity> > > Handle(PagedPositionsQuery request, CancellationToken cancellationToken)
        {
            var validFilter = new GetPositionsQuery();

            // Draw map to PageNumber
            validFilter.PageNumber = (request.Start / request.Length) + 1;
            // Length map to PageSize
            validFilter.PageSize = request.Length;

            // Map order > OrderBy
            var colOrder = request.Order[0];

            switch (colOrder.Column)
            {
            case 0:
                validFilter.OrderBy = colOrder.Dir == "asc" ? "PositionNumber" : "PositionNumber DESC";
                break;

            case 1:
                validFilter.OrderBy = colOrder.Dir == "asc" ? "PositionTitle" : "PositionTitle DESC";
                break;

            case 2:
                validFilter.OrderBy = colOrder.Dir == "asc" ? "PositionDescription" : "PositionDescription DESC";
                break;
            }

            // Map Search > searchable columns
            if (!string.IsNullOrEmpty(request.Search.Value))
            {
                //limit to fields in view model
                validFilter.PositionNumber = request.Search.Value;
                validFilter.PositionTitle  = request.Search.Value;
            }
            if (string.IsNullOrEmpty(validFilter.Fields))
            {
                //default fields from view model
                validFilter.Fields = _modelHelper.GetModelFields <GetPositionsViewModel>();
            }
            // query based on filter
            var entityPositions = await _positionRepository.GetPagedPositionReponseAsync(validFilter);

            var          data        = entityPositions.data;
            RecordsCount recordCount = entityPositions.recordsCount;

            // response wrapper
            return(new PagedDataTableResponse <IEnumerable <Entity> >(data, request.Draw, recordCount));
        }
        public async Task <(IEnumerable <Entity> data, RecordsCount recordsCount)> GetPagedEmployeeReponseAsync(GetEmployeesQuery requestParameter)
        {
            IQueryable <Employee> result;

            var employeeNumber = requestParameter.EmployeeNumber;
            var employeeTitle  = requestParameter.EmployeeTitle;

            var pageNumber = requestParameter.PageNumber;
            var pageSize   = requestParameter.PageSize;
            var orderBy    = requestParameter.OrderBy;
            var fields     = requestParameter.Fields;

            int recordsTotal, recordsFiltered;

            int seedCount = 1000;

            result = _mockData.GetEmployees(seedCount)
                     .AsQueryable();

            // Count records total
            recordsTotal = result.Count();

            // filter data
            FilterByColumn(ref result, employeeNumber, employeeTitle);

            // Count records after filter
            recordsFiltered = result.Count();

            //set Record counts
            var recordsCount = new RecordsCount
            {
                RecordsFiltered = recordsFiltered,
                RecordsTotal    = recordsTotal
            };

            // set order by
            if (!string.IsNullOrWhiteSpace(orderBy))
            {
                result = result.OrderBy(orderBy);
            }

            //limit query fields
            if (!string.IsNullOrWhiteSpace(fields))
            {
                result = result.Select <Employee>("new(" + fields + ")");
            }
            // paging
            result = result
                     .Skip((pageNumber - 1) * pageSize)
                     .Take(pageSize);

            // retrieve data to list
            // var resultData = await result.ToListAsync();
            // Note: Bogus library does not support await for AsQueryable.
            // Workaround:  fake await with Task.Run and use regular ToList
            var resultData = await Task.Run(() => result.ToList());

            // shape data
            var shapeData = _dataShaper.ShapeData(resultData, fields);

            return(shapeData, recordsCount);
        }
Example #7
0
        internal void StartSync()
        {
            LogFileHelper.logList = new ArrayList();
            Console.WriteLine(string.Format("[{0}] : Start Sync Approval Letter", DateTime.Now.ToString()));
            LogFileHelper.logList.Add(string.Format("[{0}] : Start Sync Approval Letter", DateTime.Now.ToString()));
            RecordsCount SyncCount = default(RecordsCount);

            // Initialising the variables
            SyncCount.InsertCount    = 0;
            SyncCount.NoAccountCount = 0;
            SyncCount.NonMSCCount    = 0;
            SyncCount.SameDateCount  = 0;
            SyncCount.UpdateCount    = 0;
            string FileID = "";

            try
            {
                //System.Data.DataTable wizardData = this.GetWizardApprovedDate();
                //UPDATED 10062016
                DataTable wizardData = this.GetFromWizardApprovedDate();
                //statusdate
                //string Filename0 = getFileName();
                //DataTable wizardData = GetWizardApprovedDateFromExcelFile(Filename0, "ApprovalDates_10062016");
                int totalRecord = wizardData.Rows.Count;
                Console.WriteLine(string.Format("[{0}] : Total record for Approval Letter Dates is {1}", DateTime.Now.ToString(), totalRecord));
                LogFileHelper.logList.Add(string.Format("[{0}] : Total record for Approval Letter Dates is {1}", DateTime.Now.ToString(), totalRecord));
                int count = 0;
                //if (totalRecord > 0)
                //{
                //    ExcelFileHelper.GenerateExcelFileApprovalDates(wizardData, DateTime.Now.ToString("dd-MM-yyyy"));
                //}
                Guid?MOFApprovalStatus    = SyncHelper.GetCodeMasterID("Approval Letter", CodeType.MSCApprovalStatus, true);
                Guid MOFApprovalStatusCID = new Guid(MOFApprovalStatus.Value.ToString());
                foreach (System.Data.DataRow row in wizardData.Rows)
                {
                    count += 1;

                    FileID = row["RefNumber"].ToString();
                    FileID = "CS/3/" + FileID;
                    // Field below must be change ****************************************
                    string ApprovalLetterDate = SyncHelper.ConvertStringToDateTime(row["StatusDate"].ToString().Trim(), false).ToString();
                    //Dim StatusDescription As String = SyncHelper.GetMappingValue(AppConst.CodeType.MSCApprovalStatus, "MOF Approved")
                    if (!string.IsNullOrEmpty(ApprovalLetterDate))
                    {
                        Guid?accountID = GetAccountIDByFileID(FileID);

                        if (accountID != null)
                        {
                            if (IsNonMSC(accountID.Value))
                            {
                                SyncCount.NonMSCCount += 1;
                                Console.WriteLine(string.Format("[{0}] {2}/{3} : Skip Non MSC record FileID {1}", DateTime.Now.ToString(), FileID, count, totalRecord));
                                LogFileHelper.logList.Add(string.Format("[{0}] {2}/{3} : Skip Non MSC record FileID {1}", DateTime.Now.ToString(), FileID, count, totalRecord));
                                continue;
                            }

                            Guid?MSCStatusHistoryID = GetMSCStatusHistoryID(accountID.Value, MOFApprovalStatusCID);

                            if (MSCStatusHistoryID != null)
                            {
                                if (IsDifferentApprovalDate(MSCStatusHistoryID, ApprovalLetterDate))
                                {
                                    UpdateApprovalLetterDate(accountID.Value, MSCStatusHistoryID.Value, Convert.ToDateTime(ApprovalLetterDate));
                                    SyncCount.UpdateCount += 1;
                                    Console.WriteLine(string.Format("[{0}] {2}/{3} : Update MSCStatusHistory FileID {1}", DateTime.Now.ToString(), FileID, count, totalRecord));
                                    LogFileHelper.logList.Add(string.Format("[{0}] {2}/{3} : Update MSCStatusHistory FileID {1}", DateTime.Now.ToString(), FileID, count, totalRecord));
                                }
                                else
                                {
                                    SyncCount.SameDateCount += 1;
                                    Console.WriteLine(string.Format("[{0}] {2}/{3} : Skip same approval letter date FileID {1}", DateTime.Now.ToString(), FileID, count, totalRecord));
                                    LogFileHelper.logList.Add(string.Format("[{0}] {2}/{3} : Skip same approval letter date FileID {1}", DateTime.Now.ToString(), FileID, count, totalRecord));                            // Skip to update same date
                                }
                            }
                            else
                            {
                                SyncCount.InsertCount += 1;
                                CreateApprovalLetterDate(accountID.Value, MOFApprovalStatusCID, Convert.ToDateTime(ApprovalLetterDate));
                                Console.WriteLine(string.Format("[{0}] {2}/{3} : Create MSCStatusHistory FileID {1}", DateTime.Now.ToString(), FileID, count, totalRecord));
                                LogFileHelper.logList.Add(string.Format("[{0}] {2}/{3} : Create MSCStatusHistory FileID {1}", DateTime.Now.ToString(), FileID, count, totalRecord));
                            }
                        }
                        else
                        {
                            SyncCount.NonMSCCount += 1;
                            Console.WriteLine(string.Format("[{0}] {2}/{3} : Record FileID {1} not found", DateTime.Now.ToString(), FileID, count, totalRecord));
                            LogFileHelper.logList.Add(string.Format("[{0}] {2}/{3} : Record FileID {1} not found", DateTime.Now.ToString(), FileID, count, totalRecord));
                        }
                    }
                    Console.WriteLine(string.Format("[{0}] : End Sync Approval Letter", DateTime.Now.ToString()));
                    LogFileHelper.logList.Add(string.Format("[{0}] : End Sync Approval Letter", DateTime.Now.ToString()));
                }
            }
            catch (Exception ex)
            {
                LogFileHelper.logList.Add("Error for MSCFileID" + FileID + ", Error : " + ex.Message);
                List <string> TOs = new List <string>();
                //TOs.AddRange(BOL.Common.Modules.Parameter.WIZARD_RCPNT.Split(','));
                TOs.Add("*****@*****.**");
                bool SendSuccess = BOL.Utils.Email.SendMail(TOs.ToArray(), null, null, BOL.Common.Modules.Parameter.WIZARD_SUBJ, string.Format("{0} SyncApprovalLetterDates {1}", BOL.Common.Modules.Parameter.WIZARD_DESC, ex.Message), null);
            }
            //if (LogFileHelper.logList.Count > 0)
            //{
            //    string ModeSync = "ApprovalLetterDatesSyncLog_";
            //    LogFileHelper.WriteLog(LogFileHelper.logList, ModeSync);
            //}
        }