示例#1
0
 protected override IEnumerable <SendMessageHistoryModel> ConvertModel(IEnumerable <SendMessageHistoryModel> models)
 {
     return(SendMessageHistoryProfile.ConvertModel(models, new UnitOfWork(context)));
 }
        protected override ReportDownloadModel ProduceFile(SectorSendMessageStatisticCriteriaModel criteria, IEnumerable <SendMessageStatisticModel> models)
        {
            switch (criteria.DownloadType)
            {
            case DownloadType.Statistic:
            {
                var result = models.Select(p => new
                    {
                        部門   = p.DepartmentName,
                        姓名   = p.FullName,
                        發送通數 = p.TotalReceiverCount,
                        發送扣點 = p.TotalMessageCost,
                    });

                return(ProduceZipFile(
                           fileName: "部門通數統計.zip",
                           zipEntries: new Dictionary <string, DataTable>
                    {
                        { "部門通數統計", Converter.ToDataTable(result.ToList()) },
                    }
                           ));
            }

            case DownloadType.All:
            {
                IEnumerable <SendMessageHistoryModel> historyModels = (Mapper.Map <IEnumerable <SendMessageHistory>, IEnumerable <SendMessageHistoryModel> >(GetSendMessageHistory(criteria))).ToList();

                ////////////////////////////////////////
                // protected override IEnumerable<SectorSendMessageHistoryModel> ConvertModel(IEnumerable<SectorSendMessageHistoryModel> models)

                //var deaprtmentRepository = this.unitOfWork.Repository<Department>();
                //var userRepository = this.unitOfWork.Repository<ApplicationUser>();

                //int rowNo = 0;

                //foreach (var model in models)
                //{
                //    model.RowNo = ++rowNo;

                //    if (model.DepartmentId.HasValue)
                //    {
                //        model.DepartmentName = deaprtmentRepository.GetById(model.DepartmentId.Value).Name;
                //    }

                //    var user = userRepository.GetById(model.CreatedUserId);
                //    model.UserName = user.UserName;
                //    model.FullName = user.FullName;

                //    model.DeliveryStatusChineseString = model.DeliveryStatusString; // TODO: DeliveryStatus 中文說明
                //}

                historyModels = SendMessageHistoryProfile.ConvertModel(historyModels, new UnitOfWork(context));

                ////////////////////////////////////////

                TimeSpan clientTimezoneOffset = ClientTimezoneOffset;
                string   timeFormat           = Converter.Every8d_SentTime;

                var result = historyModels.Select(p => new
                    {
                        簡訊類別   = AttributeHelper.GetColumnDescription(p.SendMessageType),
                        部門     = p.DepartmentName,
                        姓名     = p.FullName,
                        帳號     = p.UserName,
                        門號     = p.DestinationAddress,
                        發送時間   = Converter.ToLocalTimeString(p.SendTime, clientTimezoneOffset, timeFormat),
                        收訊時間   = Converter.ToLocalTimeString(p.SentDate, clientTimezoneOffset, timeFormat),
                        簡訊類別描述 = p.SendTitle,
                        發送內容   = p.SendBody,
                        狀態     = p.DeliveryStatusChineseString,
                        發送扣點   = p.MessageCost,
                    });

                return(ProduceZipFile(
                           fileName: "部門發送紀錄.zip",
                           zipEntries: new Dictionary <string, DataTable>
                    {
                        { "部門發送紀錄", Converter.ToDataTable(result.ToList()) },
                    }
                           ));
            }

            default:
                throw new Exception(string.Format("尚未實作下載類型為{0}的下載內容", criteria.DownloadType.ToString()));
            }
        }