Esempio n. 1
0
        public IEnumerable <DTO.ApplicationStore> ConnectApplications(DTO.Store store)
        {
            var applicationStoreCollection = new List <DTO.ApplicationStore>();

            var _store = storeRepository.Get(store.Code);

            if (_store.IsNull())
            {
                throw new ArgumentException("Ops! Esta loja não possui cadastro. :(");
            }

            using (var transaction = Connection.BeginTransaction())
            {
                try
                {
                    store.Applications.ForEach(application =>
                    {
                        var _application = applicationRepository.Get(application.ApplicationName);

                        if (_application.IsNull())
                        {
                            throw new ArgumentException("Ops! A aplicação '{0}' não existe. :(".ToFormat(application.ApplicationName));
                        }

                        var applicationStore = applicationStoreRepository.Get(_application.Code.Value, _store.Code);

                        if (applicationStore.IsNull())
                        {
                            applicationStoreCollection.Add(new DTO.ApplicationStore(applicationStoreService.Save(_application, _store, application.AllowedOrigins)));
                        }
                        else
                        {
                            if (!applicationStore.Status)
                            {
                                applicationStore.Status = true;
                                applicationStoreRepository.Update(applicationStore);
                            }

                            applicationStoreCollection.Add(new DTO.ApplicationStore(applicationStore));
                        }
                    });

                    transaction.Commit();
                }
                catch
                {
                    if (!transaction.IsNull())
                    {
                        transaction.Rollback();
                    }

                    throw;
                }
            }

            return(applicationStoreCollection);
        }