/// <summary> /// Try to add pregnancy. Asks user any questions he has to be asked. /// </summary> /// <param name="date">The clicked day.</param> /// <returns>True if added. Otherwise false.</returns> public bool AddConceptionDay(DateTime date) { if (!this.Conceptions.IsPregnancyDay(date)) { if (date > DateTime.Today) { if (!MsgBox.YesNo( TEXT.Get["Future_pregnancy_day"] + TEXT.Get["Are_you_sure_capital"], TEXT.Get["What_a_situation"])) { return(false); } } ConceptionPeriod concPeriod = this.Conceptions.GetConceptionAfterDate(date); if (concPeriod != null && (concPeriod.StartDay - date).Days <= ConceptionPeriod.StandardLength) { MsgBox.YesNo( TEXT.Get.Format("Already_pregnant_after", (concPeriod.StartDay - date).Days.ToString()), TEXT.Get["No_no_no"]); return(false); } MenstruationPeriod nextMenses = this.Menstruations.GetClosestPeriodAfterDay(date); if (nextMenses != null) { if (!MsgBox.YesNo( TEXT.Get["Have_menses_after_pregn"] + TEXT.Get["Are_you_sure_capital"], TEXT.Get["What_a_situation"])) { return(false); } } MenstruationPeriod prevMenses = this.Menstruations.GetPeriodByDate(date); if (prevMenses != null) { if (!MsgBox.YesNo( TEXT.Get["Pregn_on_menses"] + TEXT.Get["Are_you_sure_capital"], TEXT.Get["What_a_situation"])) { return(false); } } else { prevMenses = this.Menstruations.GetClosestPeriodBeforeDay(date); } if (prevMenses != null && Math.Abs((date - prevMenses.LastDay).Days) <= this.ManualPeriodLength) { // The pregnancy must start from last cycle start. // Also we must be sure is was not so long time ago since last cycle. prevMenses.HasPregnancy = true; return(this.Conceptions.Add(prevMenses.StartDay)); } else { return(this.Conceptions.Add(date)); } } return(false); }