예제 #1
0
파일: WSSolar.cs 프로젝트: quanted/hms
        /// <summary>
        /// Model for accessing NOAA Solar Calculator
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        public async Task <ITimeSeriesOutput> RunSolarCalculator(SolarCalculatorInput input)
        {
            Solar.SolarCalculator soCal = new SolarCalculator();
            soCal.Input = input;
            soCal.Model = input.Model.ToLower();
            Utilities.ErrorOutput error = new Utilities.ErrorOutput();
            //Validate unique solar calculator inputs
            if (String.IsNullOrWhiteSpace(input.DateTimeSpan.StartDate.ToString()) || input.DateTimeSpan.StartDate == DateTime.MinValue)
            {
                return(error.ReturnError("DateTimeSpan has no StartDate. StartDate is a required parameter."));
            }
            if (string.IsNullOrWhiteSpace(input.DateTimeSpan.EndDate.ToString()) || input.DateTimeSpan.EndDate == DateTime.MinValue)
            {
                soCal.Input.DateTimeSpan.EndDate = soCal.Input.DateTimeSpan.StartDate.AddYears(1);
            }
            if (String.IsNullOrWhiteSpace(input.Model))
            {
                return(error.ReturnError("Model parameter not defined in request."));
            }
            if (String.IsNullOrWhiteSpace(input.LocalTime) && input.Model.ToLower().Equals("year"))
            {
                soCal.LocalTime = "12:00:00";
            }
            else if (input.Model.ToLower().Equals("year"))
            {
                try
                {
                    DateTime testDate = DateTime.ParseExact(input.LocalTime, "hh:mm:ss", CultureInfo.InvariantCulture);
                }
                catch (FormatException fe) {
                    return(error.ReturnError("LocalTime parameter provided is a not a valid hour time. LocalTime format must be hh:mm:ss"));
                }
                soCal.LocalTime = input.LocalTime;
            }

            soCal.GetCalculatorData();
            return(soCal.Output);
        }