Exemple #1
0
        public void ShrinkByDate_when_index_prefix_is_null()
        {
            ShrinkByDateRequestBody request = new ShrinkByDateRequestBody
            {
                IndexPrefix = null,
                StartDate   = DateTime.UtcNow.AddDays(-2).ToString("yyyy-MM-dd"),
                EndDate     = DateTime.UtcNow.AddDays(-1).ToString("yyyy-MM-dd")
            };

            BaseServiceResponse <ShrinkByDateResponseBody> response = Controller.ShrinkByDate(request);

            Assert.IsTrue(response.Operation.Failed);
            Assert.IsNull(response.Body);
            Assert.AreEqual(nameof(ArgumentNullException), response.Operation.Error.ClassName);
        }
Exemple #2
0
        public BaseServiceResponse <ShrinkByDateResponseBody> ShrinkByDate([FromBody] ShrinkByDateRequestBody request)
        {
            BaseServiceResponse <ShrinkByDateResponseBody> response = new BaseServiceResponse <ShrinkByDateResponseBody>();

            try
            {
                #region Validations

                // Request's body can't be null.
                if (request == null)
                {
                    throw new ArgumentNullException(nameof(request));
                }

                // Index prefix must be informed.
                if (string.IsNullOrWhiteSpace((request.IndexPrefix)))
                {
                    throw new ArgumentNullException(nameof(request.IndexPrefix));
                }

                // StartDate can't be null or empty or whitespaced.
                if (string.IsNullOrWhiteSpace((request.StartDate)))
                {
                    throw new ArgumentNullException(nameof(request.StartDate));
                }

                // EndDate can't be null or empty or whitespaced.
                if (string.IsNullOrWhiteSpace((request.EndDate)))
                {
                    throw new ArgumentNullException(nameof(request.EndDate));
                }

                // StartDate must be a valid date.
                if (DateTime.TryParseExact(request.StartDate, "yyyy-MM-dd", new CultureInfo("en-US"), DateTimeStyles.None, out DateTime parsedStartDate) == false)
                {
                    throw new ArgumentException(string.Format("The argument {0} must be a valid date.", nameof(request.StartDate)));
                }

                // EndDate must be a valid date.
                if (DateTime.TryParseExact(request.EndDate, "yyyy-MM-dd", new CultureInfo("en-US"), DateTimeStyles.None, out DateTime parsedEndDate) == false)
                {
                    throw new ArgumentException(string.Format("The argument {0} must be a valid date.", nameof(request.EndDate)));
                }

                // StartDate must be at least one day in the past
                if (parsedStartDate >= DateTime.UtcNow.Date)
                {
                    throw new ArgumentOutOfRangeException(nameof(request.StartDate), request.StartDate, string.Format("The {0} must be at least one day in the past.", nameof(request.StartDate)));
                }

                // EndDate must be at least onde day in the past
                if (parsedEndDate >= DateTime.UtcNow.Date)
                {
                    throw new ArgumentOutOfRangeException(nameof(request.EndDate), request.EndDate, string.Format("The {0} must be at least one day in the past.", nameof(request.EndDate)));
                }

                // EndDate must be higher than StartDate.
                if (parsedEndDate < parsedStartDate)
                {
                    throw new ArgumentOutOfRangeException(nameof(request.EndDate), request.EndDate, string.Format("The {0} must be higher than {1}.", nameof(request.EndDate), nameof(request.StartDate)));
                }

                #endregion
            }
            catch (Exception ex)
            {
                response = new BaseServiceResponse <ShrinkByDateResponseBody>(ex);
            }

            return(response);
        }