示例#1
0
        public EInvoice()
        {
            sharedMethods = new MShared();

            connectionString = ConfigurationManager.AppSettings["ConnectionString"].ToString();
            contactEntity    = new ContactEntity();
            pharmacyEntity   = new PharmacyEntity();
        }
        /// <summary>
        /// Obtiene un objeto para convertir a JSON y enviarlo a los servicios de Abox Plan.
        /// </summary>
        /// <param name="invoice">Entidad factura a la que se le extraen los atributos</param>
        /// <param name="service"></param>
        /// <param name="trace"></param>
        /// <returns></returns>
        public InvoiceCreateRequest.Request GetInvoiceCreateRequestObject(Entity invoice, IOrganizationService service, ITracingService trace)
        {
            var     request       = new InvoiceCreateRequest.Request();
            MShared sharedMethods = new MShared();

            try
            {
                ContactEntity  contactEntity  = new ContactEntity();
                PharmacyEntity pharmacyEntity = new PharmacyEntity();

                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) && (contact.Attributes.Contains(ContactFields.IdAboxPatient)))
                {
                    request.patientId = contact.GetAttributeValue <int>(ContactFields.IdAboxPatient);
                }

                if (invoice.Attributes.Contains(InvoiceFields.InvoiceNumber))
                {
                    request.billId = invoice.GetAttributeValue <string>(InvoiceFields.InvoiceNumber);
                }


                if (invoice.Attributes.Contains(InvoiceFields.PurchaseDate))
                {
                    DateTime date = new DateTime();
                    date = invoice.GetAttributeValue <DateTime>(InvoiceFields.PurchaseDate);
                    if (date != null)
                    {
                        request.billDate = date.ToString("yyyy-MM-dd");
                    }
                }

                if (invoice.Attributes.Contains(InvoiceFields.ProductsSelectedJson))
                {
                    DataContractJsonSerializer deserializer = new DataContractJsonSerializer(typeof(InvoiceCreateRequest.Request.Product[]));

                    using (var ms = new System.IO.MemoryStream(Encoding.Unicode.GetBytes(invoice.GetAttributeValue <string>(InvoiceFields.ProductsSelectedJson))))
                    {
                        deserializer     = new DataContractJsonSerializer(typeof(InvoiceCreateRequest.Request.Product[]));
                        request.products = (InvoiceCreateRequest.Request.Product[])deserializer.ReadObject(ms);
                    }
                }

                if (invoice.Attributes.Contains(InvoiceFields.InvoiceImageWebUrl))
                {
                    request.billImageUrl = invoice.GetAttributeValue <string>(InvoiceFields.InvoiceImageWebUrl);
                }



                if (invoice.Attributes.Contains(InvoiceFields.Pharmacy))
                {
                    EntityReference pharmacyReference = null;
                    pharmacyReference = (EntityReference)invoice.Attributes[InvoiceFields.Pharmacy];
                    if (pharmacyReference != null)
                    {
                        var pharmacyRetrieved = service.Retrieve(pharmacyEntity.EntitySingularName, pharmacyReference.Id, new ColumnSet(PharmacyFields.Id));
                        if (pharmacyRetrieved.Attributes.Contains(PharmacyFields.Id))
                        {
                            string idPharmacy = pharmacyRetrieved.GetAttributeValue <string>(PharmacyFields.Id);

                            if (!String.IsNullOrEmpty(idPharmacy))
                            {
                                request.pharmacyId = idPharmacy;
                            }
                        }
                    }
                }

                return(request);
            }
            catch (Exception ex)
            {
                sharedMethods.LogPluginFeedback(new LogClass
                {
                    Exception  = ex.ToString(),
                    Level      = "error",
                    ClassName  = this.GetType().ToString(),
                    MethodName = System.Reflection.MethodBase.GetCurrentMethod().Name,
                    Message    = $"Error al obtener la estructura para el request",
                    ProcessId  = ""
                }, trace);
                trace.Trace($"MethodName: {new StackTrace(ex).GetFrame(0).GetMethod().Name}|--|Exception: " + ex.ToString());
                throw ex;
            }
        }
        public InvoiceNumberCheckRequest.Request CheckInvoiceNumberRequest(Entity invoice, IOrganizationService service, ITracingService trace)
        {
            InvoiceNumberCheckRequest.Request requestResponse = new InvoiceNumberCheckRequest.Request();
            MShared        sharedMethods  = new MShared();
            ContactEntity  contactEntity  = new ContactEntity();
            PharmacyEntity pharmacyEntity = new PharmacyEntity();
            CountryEntity  countryEntity  = new CountryEntity();

            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.Country))
                        {
                            EntityReference countryReference = null;
                            countryReference = (EntityReference)contact.Attributes[ContactFields.Country];
                            if (countryReference != null)
                            {
                                var countryRetrieved = service.Retrieve(countryEntity.EntitySingularName, countryReference.Id, new ColumnSet(CountryFields.IdCountry));
                                if (countryRetrieved.Attributes.Contains(CountryFields.IdCountry))
                                {
                                    string country = countryRetrieved.GetAttributeValue <string>(CountryFields.IdCountry);

                                    if (!String.IsNullOrEmpty(country))
                                    {
                                        requestResponse.countryId = country;
                                    }
                                }
                            }
                        }
                    }

                    if (invoice.Attributes.Contains(InvoiceFields.Pharmacy))
                    {
                        EntityReference pharmacyReference = null;
                        pharmacyReference = (EntityReference)invoice.Attributes[InvoiceFields.Pharmacy];
                        if (pharmacyReference != null)
                        {
                            var pharmacyRetrieved = service.Retrieve(pharmacyEntity.EntitySingularName, pharmacyReference.Id, new ColumnSet(PharmacyFields.Id));
                            if (pharmacyRetrieved.Attributes.Contains(PharmacyFields.Id))
                            {
                                string idPharmacy = pharmacyRetrieved.GetAttributeValue <string>(PharmacyFields.Id);

                                if (!String.IsNullOrEmpty(idPharmacy))
                                {
                                    requestResponse.pharmacyId = Convert.ToInt32(idPharmacy);
                                }
                            }
                        }
                    }

                    if (invoice.Attributes.Contains(InvoiceFields.InvoiceNumber))
                    {
                        requestResponse.purchaseNumber = invoice.GetAttributeValue <string>(InvoiceFields.InvoiceNumber);
                    }
                }
                return(requestResponse);
            }
            catch (Exception ex)
            {
                sharedMethods.LogPluginFeedback(new LogClass
                {
                    Exception  = ex.ToString(),
                    Level      = "error",
                    ClassName  = this.GetType().ToString(),
                    MethodName = System.Reflection.MethodBase.GetCurrentMethod().Name,
                    Message    = $"Error al obtener la estructura para el request",
                    ProcessId  = ""
                }, trace);
                trace.Trace($"MethodName: {new StackTrace(ex).GetFrame(0).GetMethod().Name}|--|Exception: " + ex.ToString());
                return(null);
            }
        }