Example #1
0
        /// <summary>
        /// Remueve las dosis de producto
        /// </summary>
        /// <param name="product"></param>
        /// <returns></returns>
        private async Task RemoveDoses(Product product)
        {
            if (!string.IsNullOrWhiteSpace(product.Id))
            {
                //obtiene el identificador de la dosis por defecto
                var defaultDoses = await queries.GetDefaultDosesId(product.Id);

                if (string.IsNullOrWhiteSpace(defaultDoses))
                {
                    await CreateDefaultDoses(product.Id);
                }


                // obtiene todas las dosis que no sean por defecto y estén activas
                var dosesPrevIds = await queries.GetActiveDosesIdsFromProductId(product.Id);


                // de las dosis encontradas usa el dosesOperation para eliiminar
                if (dosesPrevIds.Any())
                {
                    foreach (var idDoses in dosesPrevIds)
                    {
                        // elimina cada dosis, internamente elimina si no hay dependencias, si existen dependencias la desactiva y la deja en el search.
                        await dosesOperation.Remove(idDoses);
                    }
                }
            }
        }
        private async Task <RelatedId> RemoveDoses(Product product)
        {
            if (!string.IsNullOrWhiteSpace(product.Id))
            {
                //obtiene el identificador de la dosis por defecto
                var defaultDoses = await queries.GetDefaultDosesId(product.Id);

                if (string.IsNullOrWhiteSpace(defaultDoses))
                {
                    defaultDoses = await CreateDefaultDoses(product.Id);
                }
                // elimina todas las dosis que no sean por defecto relacionadas con el producto
                search.DeleteElementsWithRelatedElementExceptId(EntityRelated.DOSES, EntityRelated.PRODUCT, product.Id, defaultDoses);
                // obtiene todas las dosis que no sean por defecto
                var dosesPrevIds = await queries.GetActiveDosesIdsFromProductId(product.Id);

                if (dosesPrevIds.Any())
                {
                    foreach (var idDoses in dosesPrevIds)
                    {
                        // elimina cada dosis, internamente elimina si no hay dependencias, si existen dependencias la desactiva y la deja en el search.
                        await dosesOperation.Remove(idDoses);
                    }
                }
                return(new RelatedId {
                    EntityIndex = (int)EntityRelated.DOSES, EntityId = defaultDoses
                });
            }
            else
            {
                var dosesDefaultId = await CreateDefaultDoses(product.Id);

                return(new RelatedId {
                    EntityIndex = (int)EntityRelated.DOSES,
                    EntityId = dosesDefaultId
                });
            }
        }