public MergeCustomerUploadListModel Create(IEnumerable <FileModel> fileModels, IEnumerable <MergeCustomerUpload> callUpload,
                                                   IEnumerable <OrderedPair <long, string> > uploadedbyAgentNameIdPair)
        {
            var model      = new MergeCustomerUploadListModel();
            var collection = new List <MergeCustomerUploadViewModel>();

            callUpload.ToList().ForEach(cp =>
            {
                var agentName = "N/A";
                if (uploadedbyAgentNameIdPair != null && uploadedbyAgentNameIdPair.Any())
                {
                    agentName = uploadedbyAgentNameIdPair.Single(ap => ap.FirstValue == cp.UploadedBy).SecondValue;
                }

                var successFile = (from f in fileModels where f.Id == cp.FileId select f).Single();

                FileModel failedFile = null;

                if (cp.LogFileId.HasValue)
                {
                    failedFile = (from f in fileModels where f.Id == cp.LogFileId select f).Single();
                }

                var callUploadViewModel = new MergeCustomerUploadViewModel
                {
                    Id   = cp.Id,
                    File = successFile,
                    SuccessfullCustomer = cp.SuccessUploadCount,
                    FailedCustomer      = cp.FailedUploadCount,
                    UploadTime          = cp.UploadTime,
                    FailedFile          = failedFile,
                    Status     = ((MergeCustomerUploadStatus)cp.StatusId).GetDescription(),
                    UploadedBy = agentName,
                };

                collection.Add(callUploadViewModel);
            });

            model.Collection = collection;
            return(model);
        }
        public ActionResult UploadDetail(MergeCustomerUploadListModelFilter filter = null, int pageNumber = 1)
        {
            try
            {
                int totalRecords;
                var model = _mergeCustomerUploadService.GetMergeCustomerUploadDetails(pageNumber, _pageSize, filter, out totalRecords);


                if (model == null)
                {
                    model = new MergeCustomerUploadListModel();
                }
                model.Filter = filter;

                var currentAction          = ControllerContext.RouteData.Values["action"].ToString();
                Func <int, string> urlFunc =
                    pn =>
                    Url.Action(currentAction,
                               new
                {
                    pageNumber = pn,
                    filter.FromUploadDate,
                    filter.ToUploadDate,
                    filter.UploadedBy
                });

                model.PagingModel = new PagingModel(pageNumber, _pageSize, totalRecords, urlFunc);

                IoC.Resolve <ILogManager>().GetLogger <Global>().Info("Call Upload going to return view @" + DateTime.Now);

                return(View(model));
            }
            catch (Exception ex)
            {
                IoC.Resolve <ILogManager>().GetLogger <Global>().Error(ex.Message);
                IoC.Resolve <ILogManager>().GetLogger <Global>().Error("Call Upload Stack Trace :" + ex.StackTrace);
                var model = new MergeCustomerUploadListModel();
                model.Filter = filter;
                return(View(model));
            }
        }