所以,
我有几种情况需要被覆盖:我已经成功地覆盖几个人,但一个情况下仍然谜给我。
验收标准是:
例:
我有一期是这样的:
period | start date | end date
first 2/1/2018 null
而且我想,以验证这种情况下是无效的,因为它与第一种情况下重叠
period | start date | end date
second 11/16/2017 2/2/2018
下面是编写的代码至今:
public (bool, string) IsValid(long someId, Numbers number, bool ignoreNumber = false)
{
var reportQuery = QueryOver.Of<Numbers >()
.Where(r => r.Some.ID == someId);
var values = this.Find(reportQuery);
// check if entered number already exists
if (!ignoreNumber )
{
if(values.Any(x=>x.Number == number.Number && x.ID != number.ID))
{
return (false, General.ExistValidation.ToString());
}
}
// check if entered valid from is empty
var df = Convert.ToDateTime(number.ValidFrom);
var dateFrom = df.ToShortDateString();
if (dateFrom == "1/1/0001")
{
return (false, General.EnterValidFor.ToString());
}
// if there is already null value for end date then return validation error
// only one null value for valid to can exist
if(! number.EndDate.HasValue && values.Any(x => !x.EndDate.HasValue && x.ID != number.ID))
{
return (false, General.NumberValidFromValidation.ToString());
}
// check if entered period for number already exists (StarDate to EndDate)
if (number.StarDate .HasValue && values.Any(x => x.StarDate <= number.EndDate&& number.StarDate <= x.EndDate&& x.ID != number.ID))
{
return (false, General.NumberDatesValidation.ToString());
}
// this is not valid I want to return error if user enters values that overlaps with
if (number.StarDate .HasValue && values.Any(x=>x.EndDate== null && x.StarDate <= num.StarDate ))
{
}
// check if stardate is greater than end date
if (number.StarDate >= number.EndDate)
{
return (false, General.StageDatesCheck.ToString());
}
return (true, string.Empty);
}
所以,如果结束日期为空,那么它的有效开放式的,正确的呢?如果是这样,那么你真的需要检查一个匹配的周期是否已没有结束日期的条目的开始日期后第一或结束日期。由于开始日期后任何事情会自动发生冲突。