示例#1
0
        public override GetDailyStatResponseMessage GetDailyStat(GetDailyStatMessage message)
        {
            if (message.ReportDate.Kind == DateTimeKind.Local //Can't exctract date from Local time correctly in WCF
                ||
                message.ReportDate.Hour != 0
                ||
                message.ReportDate.Minute != 0
                ||
                message.ReportDate.Second != 0
                ||
                message.ReportDate.Millisecond != 0)
            {
                throw new ArgumentException("Report Date field can not contain Hours, Minutes, Seconds, Milliseconds or TimeZone.");
            }

            if (message.TimeZoneUtcOffsetInMinutes % 15 != 0)
            {
                throw new ArgumentException();
            }

            var date   = message.ReportDate.Date;
            var offset = new TimeSpan(0, message.TimeZoneUtcOffsetInMinutes, 0);

            //new DateTimeOffset(message.DateWithTimeZone) - don't work for DateTimeKind.Utc
            var dateWithTimeZone = new DateTimeOffset(date.Year, date.Month, date.Day, 0, 0, 0, offset);

            var data = new GetStatByHours(this.CreateRepository())
                       .Execute(dateWithTimeZone);

            return(new GetDailyStatResponseMessage
            {
                Data =
                    (from P in data
                     select new StatByHour
                {
                    Hour = P.Hour,
                    FileSizeSum = P.FileSizeSum,
                    ResultFileSizeSum = P.ResultFileSizeSum,
                    TotalFileSizeSum = P.TotalFileSizeSum,
                    TotalCount = P.TotalCount
                }).ToList()
            });
        }
        public IEnumerable <IStatByHour> Execute(DateTimeOffset dateWithTimeZone)
        {
            ServiceClient client = new ServiceClient(new EndpointAddress(this.serviceOptions.Address));

            GetDailyStatMessage message = new GetDailyStatMessage()
            {
                ReportDate = dateWithTimeZone.Date,
                TimeZoneUtcOffsetInMinutes = (short)dateWithTimeZone.Offset.TotalMinutes
            };
            List <StatByHour> result =
                (from P in client.GetDailyStat(message).Data
                 select new StatByHour
            {
                Hour = P.Hour,
                FileSizeSum = P.FileSizeSum,
                ResultFileSizeSum = P.ResultFileSizeSum,
                TotalFileSizeSum = P.TotalFileSizeSum,
                TotalCount = P.TotalCount
            }).ToList();

            return(result);
        }
 public abstract GetDailyStatResponseMessage GetDailyStat(GetDailyStatMessage message);
示例#4
0
 public GetDailyStatResponseMessage GetDailyStat(GetDailyStatMessage message)
 {
     return(base.Channel.GetDailyStat(message));
 }