/// <summary> /// Gets correct weather period from client /// </summary> /// <param name="stream">client stream</param> /// <returns>dates period eg. 3</returns> private async Task <int> GetWeatherPeriod(NetworkStream stream, byte[] daysPeriodBuffer) { do { Array.Clear(daysPeriodBuffer, 0, daysPeriodBuffer.Length); await stream.ReadAsync(daysPeriodBuffer, 0, daysPeriodBuffer.Length); } while (Encoding.ASCII.GetString(daysPeriodBuffer).Contains("\r\n")); string weatherDate = Encoding.ASCII.GetString(daysPeriodBuffer); int days = _weatherService.CalculateWeatherPeriod(weatherDate); while (days < 1 || days > 6) { await stream.WriteAsync(Encoding.ASCII.GetBytes(ServerMessagesResources.WrongTimePeriodMessage), 0, ServerMessagesResources.WrongTimePeriodMessage.Length); do { Array.Clear(daysPeriodBuffer, 0, daysPeriodBuffer.Length); await stream.ReadAsync(daysPeriodBuffer, 0, daysPeriodBuffer.Length); } while (Encoding.ASCII.GetString(daysPeriodBuffer).Contains("\r\n")); weatherDate = Encoding.ASCII.GetString(daysPeriodBuffer); days = _weatherService.CalculateWeatherPeriod(weatherDate); } return(days); }