public string GetErrorMessage(ScientificNameActionStatus status)
    {
        switch (status)
        {
        case ScientificNameActionStatus.Duplicate:
            return("Scientific Name address already exists. Please enter a different one.");

        default:
            return("Error");
        }
    }
    protected void FormViewScientificName_ItemInserting(object sender, FormViewInsertEventArgs e)
    {
        UserBLL userBLL = new UserBLL();

        TextBox txtScientificName         = (TextBox)formViewScientificName.FindControl("txtScientificName");
        ScientificNameActionStatus status = Validate(txtScientificName.Text, actionType.insert);

        if (status == ScientificNameActionStatus.Success)
        {
            User user = userBLL.GetUserByUserName((HttpContext.Current.User.Identity).Name);

            e.Values["CreatedDate"]   = DateTime.Now;
            e.Values["CreatorUserID"] = user.UserID;
            e.Values["EditedDate"]    = DateTime.Now;
            e.Values["EditorUserId"]  = user.UserID;
        }
        else
        {
            ltlMessage.Text = MessageFormatter.GetFormattedErrorMessage(GetErrorMessage(status));
            e.Cancel        = true;
        }
    }
    protected void FormViewScientificName_ItemUpdating(object sender, FormViewUpdateEventArgs e)
    {
        TextBox txtScientificName         = (TextBox)formViewScientificName.FindControl("txtScientificName");
        ScientificNameActionStatus status = Validate(txtScientificName.Text, actionType.update);

        if (status == ScientificNameActionStatus.Success)
        {
            Type           myType = (typeof(ScientificName));
            PropertyInfo[] props  = myType.GetProperties();

            string[] arrNewValues = new string[e.NewValues.Keys.Count];
            e.NewValues.Keys.CopyTo(arrNewValues, 0);

            ScientificNameBLL scientificNameBLL = new ScientificNameBLL();
            ScientificName    scientificName    = scientificNameBLL.GetScientificNameByScientificNameId2((int)e.Keys["ScientificNameId"]);

            foreach (var prop in props)
            {
                if (("System.String,System.Int,System.DateTime,System.Guid").IndexOf((prop.PropertyType).FullName) >= 0) // Si la propiedad es de tipo Guid, String, Int o DateTime
                {
                    if (!arrNewValues.Contains(prop.Name))
                    {
                        e.NewValues[prop.Name] = prop.GetValue(scientificName, null);
                    }
                }
            }

            User editor = new UserBLL().GetUserByUserName((HttpContext.Current.User.Identity).Name);

            e.NewValues["EditorUserId"] = editor.UserID.ToString();
            e.NewValues["EditedDate"]   = DateTime.Now;
        }
        else
        {
            ltlMessage.Text = MessageFormatter.GetFormattedErrorMessage(GetErrorMessage(status));
            e.Cancel        = true;
        }
    }