/// <summary> /// Adds an [Contact](CSSPModels.Contact.html) item in CSSPDB /// </summary> /// <param name="contact">Is the Contact item the client want to add to CSSPDB</param> /// <param name="addContactType">[AddContactTypeEnum] (CSSPEnums.AddContactTypeEnum.html) use when adding a new contact</param> /// <returns>true if Contact item was added to CSSPDB, false if an error happened during the DB requested transtaction</returns> public bool Add(Contact contact, AddContactTypeEnum addContactType) { contact.ValidationResults = Validate(new ValidationContext(contact), ActionDBTypeEnum.Create, addContactType); if (contact.ValidationResults.Count() > 0) { return(false); } db.Contacts.Add(contact); if (!TryToSave(contact)) { return(false); } return(true); }
/// <summary> /// Validate function for all ContactService commands /// </summary> /// <param name="validationContext">System.ComponentModel.DataAnnotations.ValidationContext (Describes the context in which a validation check is performed.)</param> /// <param name="actionDBType">[ActionDBTypeEnum] (CSSPEnums.ActionDBTypeEnum.html) action type to validate</param> /// <param name="addContactType">[AddContactTypeEnum] (CSSPEnums.AddContactTypeEnum.html) use when adding a new contact</param> /// <returns>IEnumerable of ValidationResult (Where ValidationResult is a container for the results of a validation request.)</returns> private IEnumerable <ValidationResult> Validate(ValidationContext validationContext, ActionDBTypeEnum actionDBType, AddContactTypeEnum addContactType) { string retStr = ""; Enums enums = new Enums(LanguageRequest); Contact contact = validationContext.ObjectInstance as Contact; contact.HasErrors = false; if (actionDBType == ActionDBTypeEnum.Update || actionDBType == ActionDBTypeEnum.Delete) { if (contact.ContactID == 0) { contact.HasErrors = true; yield return(new ValidationResult(string.Format(CSSPServicesRes._IsRequired, "ContactID"), new[] { "ContactID" })); } if (!(from c in db.Contacts select c).Where(c => c.ContactID == contact.ContactID).Any()) { contact.HasErrors = true; yield return(new ValidationResult(string.Format(CSSPServicesRes.CouldNotFind_With_Equal_, "Contact", "ContactID", contact.ContactID.ToString()), new[] { "ContactID" })); } } if (string.IsNullOrWhiteSpace(contact.Id)) { contact.HasErrors = true; yield return(new ValidationResult(string.Format(CSSPServicesRes._IsRequired, "Id"), new[] { "Id" })); } if (!string.IsNullOrWhiteSpace(contact.Id) && contact.Id.Length > 128) { contact.HasErrors = true; yield return(new ValidationResult(string.Format(CSSPServicesRes._MaxLengthIs_, "Id", "128"), new[] { "Id" })); } AspNetUser AspNetUserId = (from c in db.AspNetUsers where c.Id == contact.Id select c).FirstOrDefault(); if (AspNetUserId == null) { contact.HasErrors = true; yield return(new ValidationResult(string.Format(CSSPServicesRes.CouldNotFind_With_Equal_, "AspNetUser", "Id", (contact.Id == null ? "" : contact.Id.ToString())), new[] { "Id" })); } TVItem TVItemContactTVItemID = (from c in db.TVItems where c.TVItemID == contact.ContactTVItemID select c).FirstOrDefault(); if (TVItemContactTVItemID == null) { contact.HasErrors = true; yield return(new ValidationResult(string.Format(CSSPServicesRes.CouldNotFind_With_Equal_, "TVItem", "ContactTVItemID", contact.ContactTVItemID.ToString()), new[] { "ContactTVItemID" })); } else { List <TVTypeEnum> AllowableTVTypes = new List <TVTypeEnum>() { TVTypeEnum.Contact, }; if (!AllowableTVTypes.Contains(TVItemContactTVItemID.TVType)) { contact.HasErrors = true; yield return(new ValidationResult(string.Format(CSSPServicesRes._IsNotOfType_, "ContactTVItemID", "Contact"), new[] { "ContactTVItemID" })); } } if (string.IsNullOrWhiteSpace(contact.LoginEmail)) { contact.HasErrors = true; yield return(new ValidationResult(string.Format(CSSPServicesRes._IsRequired, "LoginEmail"), new[] { "LoginEmail" })); } if (!string.IsNullOrWhiteSpace(contact.LoginEmail) && (contact.LoginEmail.Length < 6 || contact.LoginEmail.Length > 255)) { contact.HasErrors = true; yield return(new ValidationResult(string.Format(CSSPServicesRes._LengthShouldBeBetween_And_, "LoginEmail", "6", "255"), new[] { "LoginEmail" })); } if (!string.IsNullOrWhiteSpace(contact.LoginEmail)) { Regex regex = new Regex(@"^([\w\!\#$\%\&\'*\+\-\/\=\?\^`{\|\}\~]+\.)*[\w\!\#$\%\&\'*\+\-\/\=\?\^`{\|\}\~]+@((((([a-zA-Z0-9]{1}[a-zA-Z0-9\-]{0,62}[a-zA-Z0-9]{1})|[a-zA-Z])\.)+[a-zA-Z]{2,6})|(\d{1,3}\.){3}\d{1,3}(\:\d{1,5})?)$"); if (!regex.IsMatch(contact.LoginEmail)) { contact.HasErrors = true; yield return(new ValidationResult(string.Format(CSSPServicesRes._IsNotAValidEmail, "LoginEmail"), new[] { "LoginEmail" })); } } if (string.IsNullOrWhiteSpace(contact.FirstName)) { contact.HasErrors = true; yield return(new ValidationResult(string.Format(CSSPServicesRes._IsRequired, "FirstName"), new[] { "FirstName" })); } if (!string.IsNullOrWhiteSpace(contact.FirstName) && contact.FirstName.Length > 100) { contact.HasErrors = true; yield return(new ValidationResult(string.Format(CSSPServicesRes._MaxLengthIs_, "FirstName", "100"), new[] { "FirstName" })); } if (string.IsNullOrWhiteSpace(contact.LastName)) { contact.HasErrors = true; yield return(new ValidationResult(string.Format(CSSPServicesRes._IsRequired, "LastName"), new[] { "LastName" })); } if (!string.IsNullOrWhiteSpace(contact.LastName) && contact.LastName.Length > 100) { contact.HasErrors = true; yield return(new ValidationResult(string.Format(CSSPServicesRes._MaxLengthIs_, "LastName", "100"), new[] { "LastName" })); } if (!string.IsNullOrWhiteSpace(contact.Initial) && contact.Initial.Length > 50) { contact.HasErrors = true; yield return(new ValidationResult(string.Format(CSSPServicesRes._MaxLengthIs_, "Initial", "50"), new[] { "Initial" })); } if (string.IsNullOrWhiteSpace(contact.WebName)) { contact.HasErrors = true; yield return(new ValidationResult(string.Format(CSSPServicesRes._IsRequired, "WebName"), new[] { "WebName" })); } if (!string.IsNullOrWhiteSpace(contact.WebName) && contact.WebName.Length > 100) { contact.HasErrors = true; yield return(new ValidationResult(string.Format(CSSPServicesRes._MaxLengthIs_, "WebName", "100"), new[] { "WebName" })); } if (contact.ContactTitle != null) { retStr = enums.EnumTypeOK(typeof(ContactTitleEnum), (int?)contact.ContactTitle); if (contact.ContactTitle == null || !string.IsNullOrWhiteSpace(retStr)) { contact.HasErrors = true; yield return(new ValidationResult(string.Format(CSSPServicesRes._IsRequired, "ContactTitle"), new[] { "ContactTitle" })); } } if (!string.IsNullOrWhiteSpace(contact.SamplingPlanner_ProvincesTVItemID) && contact.SamplingPlanner_ProvincesTVItemID.Length > 200) { contact.HasErrors = true; yield return(new ValidationResult(string.Format(CSSPServicesRes._MaxLengthIs_, "SamplingPlanner_ProvincesTVItemID", "200"), new[] { "SamplingPlanner_ProvincesTVItemID" })); } if (contact.LastUpdateDate_UTC.Year == 1) { contact.HasErrors = true; yield return(new ValidationResult(string.Format(CSSPServicesRes._IsRequired, "LastUpdateDate_UTC"), new[] { "LastUpdateDate_UTC" })); } else { if (contact.LastUpdateDate_UTC.Year < 1980) { contact.HasErrors = true; yield return(new ValidationResult(string.Format(CSSPServicesRes._YearShouldBeBiggerThan_, "LastUpdateDate_UTC", "1980"), new[] { "LastUpdateDate_UTC" })); } } TVItem TVItemLastUpdateContactTVItemID = (from c in db.TVItems where c.TVItemID == contact.LastUpdateContactTVItemID select c).FirstOrDefault(); if (TVItemLastUpdateContactTVItemID == null) { contact.HasErrors = true; yield return(new ValidationResult(string.Format(CSSPServicesRes.CouldNotFind_With_Equal_, "TVItem", "LastUpdateContactTVItemID", contact.LastUpdateContactTVItemID.ToString()), new[] { "LastUpdateContactTVItemID" })); } else { List <TVTypeEnum> AllowableTVTypes = new List <TVTypeEnum>() { TVTypeEnum.Contact, }; if (!AllowableTVTypes.Contains(TVItemLastUpdateContactTVItemID.TVType)) { contact.HasErrors = true; yield return(new ValidationResult(string.Format(CSSPServicesRes._IsNotOfType_, "LastUpdateContactTVItemID", "Contact"), new[] { "LastUpdateContactTVItemID" })); } } retStr = ""; // added to stop compiling CSSPError if (retStr != "") // will never be true { contact.HasErrors = true; yield return(new ValidationResult("AAA", new[] { "AAA" })); } }