public List <string> GetEntityValidationStatus(Entity contact, Microsoft.Xrm.Sdk.ITracingService trace) { List <string> validationMessages = new List <string>(); MShared sharedMethods = new MShared(); try { bool isChildContact = false; if (contact.Attributes.Contains(ContactFields.IsChildContact)) { isChildContact = contact.GetAttributeValue <bool>(ContactFields.IsChildContact); } if (contact.Attributes.Contains(ContactFields.Id)) { if (contact.Attributes.Contains(ContactFields.IdType)) { int idType = contact.GetAttributeValue <OptionSetValue>(ContactFields.IdType).Value; if (idType != Constants.ForeignerIdValue && idType != Constants.MinorIdValue) { if (!sharedMethods.IsValidNumericID(contact.Attributes[ContactFields.Id].ToString(), trace)) { validationMessages.Add(ValidationMessages.Contact.IdentificationFormat); } } else if (idType == Constants.ForeignerIdValue) { if (!sharedMethods.IsAlphanumeric(contact.Attributes[ContactFields.Id].ToString(), trace)) { validationMessages.Add(ValidationMessages.Contact.AlphanumericForeignerIdFormat + " en el campo Cédula"); } } } } if (contact.Attributes.Contains(ContactFields.Firstname)) { if (!sharedMethods.IsValidName(contact.Attributes[ContactFields.Firstname].ToString(), trace)) { validationMessages.Add($"{ValidationMessages.Contact.ValidName} en el campo Nombre"); } if (!sharedMethods.IsValidMaxLength(contact.Attributes[ContactFields.Firstname].ToString(), Constants.MaxNameLength, trace)) { validationMessages.Add(String.Format(ValidationMessages.Contact.MaxLengthFormat, Constants.MaxNameLength) + " en el campo Nombre"); } if (!sharedMethods.IsValidMinLength(contact.Attributes[ContactFields.Firstname].ToString(), Constants.MinNameLength, trace)) { validationMessages.Add(String.Format(ValidationMessages.Contact.MinLengthFormat, Constants.MinNameLength) + " en el campo Nombre"); } } if (contact.Attributes.Contains(ContactFields.Lastname)) { if (!sharedMethods.IsValidLastname(contact.Attributes[ContactFields.Lastname].ToString(), trace)) { validationMessages.Add($"{ValidationMessages.Contact.ValidName} en el campo Primer Apellido"); } if (!sharedMethods.IsValidMaxLength(contact.Attributes[ContactFields.Lastname].ToString(), Constants.MaxNameLength, trace)) { validationMessages.Add(String.Format(ValidationMessages.Contact.MaxLengthFormat, Constants.MaxNameLength) + " en el campo Primer Apellido"); } if (!sharedMethods.IsValidMinLength(contact.Attributes[ContactFields.Lastname].ToString(), Constants.MinNameLength, trace)) { validationMessages.Add(String.Format(ValidationMessages.Contact.MinLengthFormat, Constants.MinNameLength) + " en el campo Primer Apellido"); } } if (contact.Attributes.Contains(ContactFields.SecondLastname)) { if (!sharedMethods.IsValidLastname(contact.Attributes[ContactFields.SecondLastname].ToString(), trace)) { validationMessages.Add($"{ValidationMessages.Contact.ValidName} en el campo Segundo Apellido"); } if (!sharedMethods.IsValidMaxLength(contact.Attributes[ContactFields.SecondLastname].ToString(), Constants.MaxNameLength, trace)) { validationMessages.Add(String.Format(ValidationMessages.Contact.MaxLengthFormat, Constants.MaxNameLength) + " en el campo Segundo Apellido"); } if (!sharedMethods.IsValidMinLength(contact.Attributes[ContactFields.SecondLastname].ToString(), Constants.MinNameLength, trace)) { validationMessages.Add(String.Format(ValidationMessages.Contact.MinLengthFormat, Constants.MinNameLength) + " en el campo Segundo Apellido"); } } if (contact.Attributes.Contains(ContactFields.Password)) { if (!isChildContact && !sharedMethods.IsValidPassword(contact.Attributes[ContactFields.Password].ToString(), trace)) { validationMessages.Add($"{ValidationMessages.Contact.PasswordFormat}"); } } if (contact.Attributes.Contains(ContactFields.Birthdate)) { DateTime birthdate = new DateTime(); birthdate = contact.GetAttributeValue <DateTime>(ContactFields.Birthdate); if (birthdate != null) { DateTime today = DateTime.Now; if (sharedMethods.GetAge(birthdate) < 12 && !isChildContact) { validationMessages.Add(ValidationMessages.Contact.AgeLimit); } } } if (contact.Attributes.Contains(ContactFields.Phone)) { //Los contactos bajo cuido no validan este campo pues no lo tienen disponible, esta informacion la tiene le paciente a cargo de ellos if (!isChildContact && !sharedMethods.HasOnlyNumbers(contact.Attributes[ContactFields.Phone].ToString(), trace)) { validationMessages.Add($"{ValidationMessages.Contact.OnlyNumbers} en el campo Teléfono"); } } if (contact.Attributes.Contains(ContactFields.SecondaryPhone)) { //Los contactos bajo cuido no validan este campo pues no lo tienen disponible, esta informacion la tiene le paciente a cargo de ellos if (!isChildContact && !sharedMethods.HasOnlyNumbers(contact.Attributes[ContactFields.SecondaryPhone].ToString(), trace)) { validationMessages.Add($"{ValidationMessages.Contact.OnlyNumbers} en el campo Teléfono Opcional"); } } //if (contact.Attributes.Contains(ContactFields.Email)) //{ // if (!sharedMethods.IsValidEmail(contact.Attributes[ContactFields.Email].ToString(), trace)) // { // validationMessages.Add($"{ValidationMessages.Contact.OnlyNumbers} en el campo Teléfono Opcional"); // } //} return(validationMessages); } catch (Exception ex) { sharedMethods.LogPluginFeedback(new LogClass { Exception = ex.ToString(), Level = "error", ClassName = this.GetType().ToString(), MethodName = System.Reflection.MethodBase.GetCurrentMethod().Name, Message = $"Error validando los datos de la entidad.", ProcessId = "" }, trace); trace.Trace($"MethodName: {new StackTrace(ex).GetFrame(0).GetMethod().Name}|--|Exception: " + ex.ToString()); throw ex; } }
public List <string> GetEntityValidationStatus(Entity invoice, IOrganizationService service, Microsoft.Xrm.Sdk.ITracingService trace) { List <string> validationMessages = new List <string>(); MShared sharedMethods = new MShared(); ContactEntity contactEntity = new ContactEntity(); try { Entity contact = null; if (invoice.Attributes.Contains(InvoiceFields.Customer)) { EntityReference contactReference = invoice.GetAttributeValue <EntityReference>(InvoiceFields.Customer); string[] columnsToGet = new string[] { ContactFields.IdAboxPatient, ContactFields.Country }; var columnSet = new ColumnSet(columnsToGet); contact = service.Retrieve(contactEntity.EntitySingularName, contactReference.Id, columnSet); if (contact != null) { if (!contact.Attributes.Contains(ContactFields.IdAboxPatient)) { validationMessages.Add($"Este contacto no posee un Id de paciente Abox registrado"); } } } if (!invoice.Attributes.Contains(InvoiceFields.Pharmacy)) { validationMessages.Add($"La farmacia es requerida."); } if (invoice.Attributes.Contains(InvoiceFields.InvoiceImageWebUrl)) { if (String.IsNullOrEmpty(invoice.GetAttributeValue <string>(InvoiceFields.InvoiceImageWebUrl))) { validationMessages.Add($"La imagen de la factura es requerida."); } } else { validationMessages.Add($"La imagen de la factura es requerida."); } if (invoice.Attributes.Contains(InvoiceFields.ProductsSelectedJson)) { if (String.IsNullOrEmpty(invoice.GetAttributeValue <string>(InvoiceFields.ProductsSelectedJson))) { validationMessages.Add($"No se han podido identificar los productos requeridos para guardar esta factura."); } } else { validationMessages.Add($"No se han podido identificar los productos requeridos para guardar esta factura."); } if (invoice.Attributes.Contains(InvoiceFields.PurchaseDate)) { DateTime date = new DateTime(); date = invoice.GetAttributeValue <DateTime>(InvoiceFields.PurchaseDate); if (date != null) { DateTime today = DateTime.Now; if (date > today) { validationMessages.Add("La fecha de la factura no puede ser mayor a la fecha actual."); } } } else { validationMessages.Add($"La fecha de la factura es requerida."); } //if (invoice.Attributes.Contains(InvoiceFields.PurchaseDate)) //{ // DateTime date = new DateTime(); // date = invoice.GetAttributeValue<DateTime>(InvoiceFields.PurchaseDate); // if (date != null) // { // DateTime today = DateTime.Now; // if (DateTime.) // { // } // } //} return(validationMessages); } catch (Exception ex) { sharedMethods.LogPluginFeedback(new LogClass { Exception = ex.ToString(), Level = "error", ClassName = this.GetType().ToString(), MethodName = System.Reflection.MethodBase.GetCurrentMethod().Name, Message = $"Error validando los datos de la entidad.", ProcessId = "" }, trace); trace.Trace($"MethodName: {new StackTrace(ex).GetFrame(0).GetMethod().Name}|--|Exception: " + ex.ToString()); throw ex; } }