public string HowLongAgo( SmartDate challengeDate )
    {
        TimeSpan ts = DateTime.Now - challengeDate.Date;

        if ( ts.TotalDays < 1 )
        {
            if ( ts.TotalMinutes < 60 )
            {
                if ( ts.TotalMinutes < 2 )
                {
                    return "Just now";
                }
                else
                {
                    return Math.Floor( ts.TotalMinutes ).ToString() + " minutes ago today";
                }
            }
            else
            {
                return ts.Hours == 1 ? "1 hour ago today" : ts.Hours.ToString() + " hours ago today";
            }
        }
        else if ( ts.TotalDays < 2 )
        {
            return "Yesterday";
        }
        else
        {
            return Math.Floor( ts.TotalDays ).ToString() + " days ago";
        }
    }
    public void Relative_Nearest_Day()
    {
      var day = 10;
      var smartDate = new SmartDate(day.ToString());
      if (DateTime.Now.Day - day < -16)
        Assert.AreEqual(new DateTime(DateTime.Now.Year, DateTime.Now.Month, day).AddMonths(-1).ToString("d"), smartDate);
      else if (DateTime.Now.Day - day > 16)
        Assert.AreEqual(new DateTime(DateTime.Now.Year, DateTime.Now.Month, day).AddMonths(1).ToString("d"), smartDate);
      else
        Assert.AreEqual(new DateTime(DateTime.Now.Year, DateTime.Now.Month, day).ToString("d"), smartDate);

      day = 20;
      smartDate = new SmartDate(day.ToString());
      if (DateTime.Now.Day - day < -16)
        Assert.AreEqual(new DateTime(DateTime.Now.Year, DateTime.Now.Month, day).AddMonths(-1).ToString("d"), smartDate);
      else if (DateTime.Now.Day - day > 16)
        Assert.AreEqual(new DateTime(DateTime.Now.Year, DateTime.Now.Month, day).AddMonths(1).ToString("d"), smartDate);
      else
        Assert.AreEqual(new DateTime(DateTime.Now.Year, DateTime.Now.Month, day).ToString("d"), smartDate);

      day = 28;
      smartDate = new SmartDate(day.ToString());
      if (DateTime.Now.Day - day < -16)
        Assert.AreEqual(new DateTime(DateTime.Now.Year, DateTime.Now.Month, day).AddMonths(-1).ToString("d"), smartDate);
      else if (DateTime.Now.Day - day > 16)
        Assert.AreEqual(new DateTime(DateTime.Now.Year, DateTime.Now.Month, day).AddMonths(1).ToString("d"), smartDate);
      else
        Assert.AreEqual(new DateTime(DateTime.Now.Year, DateTime.Now.Month, day).ToString("d"), smartDate);
    }
    protected string GetPostDate( SmartDate date )
    {
        string postDate = string.Empty;

        if ( date.Date.ToShortDateString() == DateTime.Today.ToShortDateString() )
            postDate = "<strong>Today</strong>, " + date.Date.ToShortTimeString();
        else if ( date.Date.ToShortDateString() == DateTime.Today.AddDays( -1 ).ToShortDateString() )
            postDate = "<strong>Yesterday</strong>, " + date.Date.ToShortTimeString();
        else
            postDate = date.Date.ToString( "f" );

        return postDate;
    }
    protected string GetMessageDate( SmartDate date )
    {
        string messageDate = string.Empty;

        if ( date.Date.ToShortDateString() == DateTime.Today.ToShortDateString() )
            messageDate = "Today, " + date.Date.ToShortTimeString();
        else if ( date.Date.ToShortDateString() == DateTime.Today.AddDays( -1 ).ToShortDateString() )
            messageDate = "Yesterday, " + date.Date.ToShortTimeString();
        else
            messageDate = date.Date.ToString( "MMM dd, hh:mm tt" );

        return messageDate;
    }
Example #5
0
 /// <summary>
 /// Inserts a new Order object in the database.
 /// </summary>
 /// <param name="orderID">The Order ID.</param>
 /// <param name="userName">The User Name.</param>
 /// <param name="orderNumber">The Order Number.</param>
 /// <param name="orderDate">The Order Date.</param>
 /// <param name="cardType">The Card Type.</param>
 /// <param name="cardHolder">The Card Holder.</param>
 /// <param name="creditCard">The Credit Card.</param>
 /// <param name="expDate">The Exp Date.</param>
 public void Insert(Guid orderID, string userName, string orderNumber, SmartDate orderDate, string cardType, string cardHolder, string creditCard, string expDate)
 {
   using (var ctx = ConnectionManager<SqlConnection>.GetManager("ActionExtenderSample"))
   {
     using (var cmd = new SqlCommand("AddOrder", ctx.Connection))
     {
       cmd.CommandType = CommandType.StoredProcedure;
       cmd.Parameters.AddWithValue("@OrderID", orderID).DbType = DbType.Guid;
       cmd.Parameters.AddWithValue("@UserName", userName).DbType = DbType.String;
       cmd.Parameters.AddWithValue("@OrderNumber", orderNumber).DbType = DbType.String;
       cmd.Parameters.AddWithValue("@OrderDate", orderDate.DBValue).DbType = DbType.DateTime;
       cmd.Parameters.AddWithValue("@CardType", cardType).DbType = DbType.String;
       cmd.Parameters.AddWithValue("@CardHolder", cardHolder).DbType = DbType.String;
       cmd.Parameters.AddWithValue("@CreditCard", creditCard).DbType = DbType.String;
       cmd.Parameters.AddWithValue("@ExpDate", expDate).DbType = DbType.String;
       cmd.ExecuteNonQuery();
     }
   }
 }
    /// <summary>
    /// Required method for Designer support - do not modify
    /// the contents of this method with the code editor.
    /// </summary>
    private void InitializeComponent()
    {
      _myDateTextBox = new System.Windows.Forms.TextBox();
      _mySmartDate = new Csla.SmartDate(true);
      SuspendLayout();
      //
      // txtDateTime
      //
      _myDateTextBox.Location = new System.Drawing.Point(20, 49);
      _myDateTextBox.MaxLength = 50;
      _myDateTextBox.Name = "myDateTextBox";
      _myDateTextBox.TabIndex = 0;
      _myDateTextBox.Text = "";
      _myDateTextBox.Leave += MyTextBox_Leave;
      _myDateTextBox.Enter += MyTextBox_Enter;
      //
      // DateTimePicker
      //
      Controls.Add(_myDateTextBox);

      // setup events
      DropDown += SmartDateTimePicker_DropDown;
      CloseUp += SmartDateTimePicker_CloseUp;
      FontChanged += SmartDateTimePicker_FontChanged;
      ForeColorChanged += SmartDateTimePicker_ForeColorChanged;
      BackColorChanged += SmartDateTimePicker_BackColorChanged;
      Resize += SmartDateTimePicker_Resize;
      Enter += SmartDateTimePicker_Enter;
      FormatChanged += SmartDateTimePicker_FormatChanged;

      // set format
      base.Format = DateTimePickerFormat.Short;
      _customFormat = "d";
      _mySmartDate.FormatString = _customFormat;

      ResumeLayout(false);
    }
    public void ExactDigits_Four()
    {
      //presume month before day
      var success = "1231";
      var fail = "3011";
      if (_dayBeforeMonth)
      {
        success = "3112";
        fail = "1130";
      }

      var smartDate = new SmartDate(success);
      Assert.AreEqual(new DateTime(DateTime.Now.Year, 12, 31).ToString("d"), smartDate);
      try
      {
        smartDate = new SmartDate(fail);
        Assert.Fail(fail + ": string value shouldn't be convertible to a date");
      }
      catch (ArgumentException)
      {
        Assert.AreEqual(new DateTime(DateTime.Now.Year, 12, 31).ToString("d"), smartDate);
      }
    }
    public void Relative_Days()
    {
      var smartDate = new SmartDate("+365");
      Assert.AreEqual(DateTime.Now.AddDays(365).ToString("d"), smartDate);

      var fail = "+a1000";
      try
      {
        smartDate = new SmartDate(fail);
        Assert.Fail(fail + ": string value shouldn't be convertible to a date");
      }
      catch (ArgumentException)
      {
        Assert.AreEqual(DateTime.Now.AddDays(365).ToString("d"), smartDate);
      }

      smartDate = new SmartDate("+ 30");
      Assert.AreEqual(DateTime.Now.AddDays(30).ToString("d"), smartDate);

      smartDate = new SmartDate("-365");
      Assert.AreEqual(DateTime.Now.AddDays(-365).ToString("d"), smartDate);

      try
      {
        smartDate = new SmartDate("-a1000");
        Assert.Fail(fail + ": string value shouldn't be convertible to a date");
      }
      catch (ArgumentException)
      {
        Assert.AreEqual(DateTime.Now.AddDays(-365).ToString("d"), smartDate);
      }

      smartDate = new SmartDate("- 30");
      Assert.AreEqual(DateTime.Now.AddDays(-30).ToString("d"), smartDate);
    }
    public void ShortForm_DayMonthYear_Big()
    {
      //presume month before day
      var success = "12" + Separator + "31";
      var fail = "30" + Separator + "11";
      if (_dayBeforeMonth)
      {
        success = "31" + Separator + "12";
        fail = "11" + Separator + "30";
      }
      if (_yearIsLast)
      {
        success += Separator + "2015";
        fail += Separator + "2015";
      }
      else
      {
        success = "2015" + Separator + success;
        fail = "2015" + Separator + fail;
      }

      var smartDate = new SmartDate(success);
      Assert.AreEqual(new DateTime(2015, 12, 31).ToString("d"), smartDate);
      try
      {
        smartDate = new SmartDate(fail);
        Assert.Fail(fail + ": string value shouldn't be convertible to a date");
      }
      catch (ArgumentException)
      {
        Assert.AreEqual(new DateTime(2015, 12, 31).ToString("d"), smartDate);
      }
    }
    public void ShortForm_DayMonth_Big()
    {
      //presume month before day
      var success = "12" + Separator + "31";
      var fail = "30" + Separator + "11";
      if (_dayBeforeMonth)
      {
        success = "31" + Separator + "12";
        fail = "11" + Separator + "30";
      }

      var smartDate = new SmartDate(success);
      Assert.AreEqual(new DateTime(DateTime.Now.Year, 12, 31).ToString("d"), smartDate);
      try
      {
        smartDate = new SmartDate(fail);
        if (_dayBeforeMonth)
          Assert.Fail(fail + ": string value shouldn't be convertible to a date");
        else
          Assert.AreEqual(new DateTime(DateTime.Now.Year, 11, 30).ToString("d"), smartDate);
      }
      catch (ArgumentException)
      {
        Assert.AreEqual(new DateTime(DateTime.Now.Year, 12, 31).ToString("d"), smartDate);
      }
    }
    public void ShortForm_DayMonthYear_Small()
    {
      //presume month before day
      var success = "1" + Separator + "3";
      var fail = "4" + Separator + "2";
      if (_dayBeforeMonth)
      {
        success = "3" + Separator + "1";
        fail = "2" + Separator + "4";
      }
      if (_yearIsLast)
      {
        success += Separator + "5";
        fail += Separator + "5";
      }
      else
      {
        success = "5" + Separator + success;
        fail = "5" + Separator + fail;
      }

      var smartDate = new SmartDate(success);
      Assert.AreEqual(new DateTime(2005, 1, 3).ToString("d"), smartDate);
      try
      {
        smartDate = new SmartDate(fail);
        Assert.AreEqual(new DateTime(2005, 4, 2).ToString("d"), smartDate);
      }
      catch (ArgumentException)
      {
        Assert.AreEqual(new DateTime(2015, 12, 31).ToString("d"), smartDate);
      }
    }
    public void ExactDigits_Eight()
    {
      //presume month before day
      var success = "1231";
      var fail = "3011";
      if (_dayBeforeMonth)
      {
        success = "3112";
        fail = "1130";
      }
      if (_yearIsLast)
      {
        success += "2015";
        fail += "2015";
      }
      else
      {
        success = "2015" + success;
        fail = "2015" + fail;
      }

      var smartDate = new SmartDate(success);
      Assert.AreEqual(new DateTime(2015, 12, 31).ToString("d"), smartDate);
      try
      {
        smartDate = new SmartDate(fail);
        Assert.Fail(fail + ": string value shouldn't be convertible to a date");
      }
      catch (ArgumentException)
      {
        Assert.AreEqual(new DateTime(2015, 12, 31).ToString("d"), smartDate);
      }
    }
    public void ShortForm_DayMonth_Small()
    {
      //presume month before day
      var success = "1" + Separator + "3";
      var fail = "4" + Separator + "2";
      if (_dayBeforeMonth)
      {
        success = "3" + Separator + "1";
        fail = "2" + Separator + "4";
      }

      var smartDate = new SmartDate(success);
      Assert.AreEqual(new DateTime(DateTime.Now.Year, 1, 3).ToString("d"), smartDate);
      try
      {
        smartDate = new SmartDate(fail);
        Assert.AreEqual(new DateTime(DateTime.Now.Year, 4, 2).ToString("d"), smartDate);
      }
      catch (ArgumentException)
      {
        Assert.AreEqual(new DateTime(DateTime.Now.Year, 1, 3).ToString("d"), smartDate);
      }
    }
 private void SetMyValue(string text, bool updateBaseValue)
 {
   var tempdate = new SmartDate(true);
   if (SmartDate.TryParse(text, SmartDate.EmptyValue.MinDate, ref tempdate))
   {
     if (tempdate.CompareTo(_mySmartDate) != 0)
     {
       _mySmartDate.Text = tempdate.ToString(_customFormat);
     }
   }
   UpdateMyTextBox();
   if (updateBaseValue)
   {
     SetBaseValue();
   }
 }
    public void Relative_Years()
    {
      var smartDate = new SmartDate("<<");
      Assert.AreEqual(DateTime.Now.AddYears(-1).ToString("d"), smartDate);

      var fail = "<<y27";
      try
      {
        smartDate = new SmartDate(fail);
        Assert.Fail(fail + ": string value shouldn't be convertible to a date");
      }
      catch (ArgumentException)
      {
        Assert.AreEqual(DateTime.Now.AddYears(-1).ToString("d"), smartDate);
      }

      smartDate = new SmartDate("<< 10");
      Assert.AreEqual(DateTime.Now.AddYears(-10).ToString("d"), smartDate);

      smartDate = new SmartDate(">>");
      Assert.AreEqual(DateTime.Now.AddYears(1).ToString("d"), smartDate);

      try
      {
        smartDate = new SmartDate(">>y27");
        Assert.Fail(fail + ": string value shouldn't be convertible to a date");
      }
      catch (ArgumentException)
      {
        Assert.AreEqual(DateTime.Now.AddYears(1).ToString("d"), smartDate);
      }

      smartDate = new SmartDate(">> 10");
      Assert.AreEqual(DateTime.Now.AddYears(10).ToString("d"), smartDate);
    }
Example #16
0
 /// <summary>
 /// Converts a string value into a SmartDate.
 /// </summary>
 /// <param name="value">String containing the date value.</param>
 /// <param name="result">The resulting SmartDate value if the parse was successful.</param>
 /// <returns>A value indicating if the parse was successful.</returns>
 public static bool TryParse(string value, ref SmartDate result)
 {
   return TryParse(value, EmptyValue.MinDate, ref result);
 }
Example #17
0
 /// <summary>
 /// Converts a string value into a SmartDate.
 /// </summary>
 /// <param name="value">String containing the date value.</param>
 /// <param name="emptyValue">Indicates whether an empty date is the min or max date value.</param>
 /// <param name="result">The resulting SmartDate value if the parse was successful.</param>
 /// <returns>A value indicating if the parse was successful.</returns>
 public static bool TryParse(string value, EmptyValue emptyValue, ref SmartDate result)
 {
   System.DateTime dateResult = DateTime.MinValue;
   if (TryStringToDate(value, emptyValue, ref dateResult))
   {
     result = new SmartDate(dateResult, emptyValue);
     return true;
   }
   else
   {
     return false;
   }
 }
Example #18
0
 /// <summary>
 /// Compares one SmartDate to another.
 /// </summary>
 /// <remarks>
 /// This method works the same as the DateTime.CompareTo method
 /// on the Date datetype, with the exception that it
 /// understands the concept of empty date values.
 /// </remarks>
 /// <param name="value">The date to which we are being compared.</param>
 /// <returns>A value indicating if the comparison date is less than, equal to or greater than this date.</returns>
 public int CompareTo(SmartDate value)
 {
   if (this.IsEmpty && value.IsEmpty)
     return 0;
   else
     return _date.CompareTo(value.Date);
 }