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;
            }
        }
Beispiel #2
0
        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;
            }
        }