public void SearchPayerForDrugstoreWithoutSuppliersWithDrugsSearchRegion() { var client = DataMother.CreateTestClientWithUser(); var payer = client.Payers.First(); var recipient = session.Query <Recipient>().First(); payer.Recipient = recipient; session.Save(payer); var homeRegion = session.Load <Region>(1UL); var supplier = new Supplier(homeRegion, payer) { Name = "Тестовый поставщик", FullName = "Тестовый поставщик", ContactGroupOwner = new ContactGroupOwner(ContactGroupType.ClientManagers) }; supplier.AddRegion(session.Query <Region>().First(r => r.DrugsSearchRegion), session); session.Save(supplier); var filter = new PayerFilter(session) { SearchBy = SearchBy.PayerId, SearchText = payer.Id.ToString(), ClientType = SearchClientType.Drugstore, WithoutSuppliers = true }; var items = filter.Find(); Assert.That(items.Count, Is.EqualTo(1)); }
public void Disable_region() { var regions = session.Query <Region>().ToList(); var region = regions .Except(regions.Where(r => (r.Id & supplier.RegionMask) > 0).Concat(new[] { supplier.HomeRegion })) .First(); supplier.AddRegion(region, session); Open("managep.aspx?cc={0}", supplier.Id); var table = (Table)Css("#MainContentPlaceHolder_Regions"); var row = table.FindRow(region.Name, 1); Click(row, "Отключить"); table = (Table)Css("#MainContentPlaceHolder_Regions"); Assert.That(table.Text, Is.Not.Contains(region.Name)); session.Refresh(supplier); Assert.AreEqual(0, supplier.RegionMask & region.Id); }
public void RegisterSupplier( [DataBind("supplierContacts")] Contact[] supplierContacts, ulong homeRegion, [DataBind("regionSettings")] RegionSettings[] regionSettings, [DataBind("options")] AdditionalSettings options, [DataBind("payer")] Payer payer, uint?existingPayerId, [DataBind("userContacts")] Contact[] userContacts, [DataBind("userPersons")] Person[] userPersons, string additionalEmailsForSendingCard, string comment) { var supplier = new Supplier(); supplier.RegionMask = regionSettings.GetBrowseMask(); SetARDataBinder(AutoLoadBehavior.NewRootInstanceIfInvalidKey); BindObjectInstance(supplier, "supplier"); SetBinder(new DataBinder()); var currentPayer = RegisterPayer(options, payer, existingPayerId, supplier.Name, supplier.FullName); supplier.HomeRegion = DbSession.Load <Region>(homeRegion); supplier.Payer = currentPayer; supplier.Account = new SupplierAccount(supplier); supplier.ContactGroupOwner = new ContactGroupOwner(supplier.GetAditionalContactGroups()); supplier.Registration = new RegistrationInfo(Admin); var user = new User(supplier.Payer, supplier); BindObjectInstance(user, "user"); if (!IsValid(supplier, user, options)) { RegisterSupplier(); PropertyBag["options"] = options; PropertyBag["supplier"] = supplier; PropertyBag["user"] = user; PropertyBag["options"] = options; return; } var tokens = DbSession.Query <FederalSupplierToken>().ToList(); supplier.IsFederal = tokens.Select(x => x.Name) .Any(x => supplier.Name.IndexOf(x, StringComparison.CurrentCultureIgnoreCase) >= 0 || supplier.FullName.IndexOf(x, StringComparison.CurrentCultureIgnoreCase) >= 0); supplier.ContactGroupOwner.AddContactGroup(new ContactGroup(ContactGroupType.MiniMails)); currentPayer.Suppliers.Add(supplier); currentPayer.UpdatePaymentSum(); AddContacts(supplier.ContactGroupOwner, supplierContacts); supplier.OrderRules.Add(new OrderSendRules(Defaults, supplier)); DbSession.Save(supplier); foreach (var group in supplier.ContactGroupOwner.ContactGroups) { var persons = BindObject <List <Person> >(group.Type + "Persons"); var contacts = BindObject <List <Contact> >(group.Type + "Contacts"); group.Persons = persons; group.Contacts = contacts; } var groups = BindObject <RegionalDeliveryGroup[]>("orderDeliveryGroup"); foreach (var group in groups) { group.Region = DbSession.Load <Region>(group.Region.Id); group.Name = "Доставка заказов " + group.Region.Name; group.ContactGroupOwner = supplier.ContactGroupOwner; supplier.ContactGroupOwner.ContactGroups.Add(group); //повторная валидация, тк когда производился binding валидация не прошла //тк не было заполнено поле Name Validator.IsValid(group); } foreach (var group in supplier.ContactGroupOwner.ContactGroups) { group.Adopt(); DbSession.Save(group); group.Persons.Each(p => DbSession.Save(p)); } DbSession.Flush(); DbSession.Query <Region>() .Where(r => (r.Id & supplier.RegionMask) > 0) .Each(r => supplier.AddRegion(r, DbSession)); CreateSupplier(supplier); Maintainer.MaintainIntersection(supplier, DbSession); user.UpdateContacts(userContacts); foreach (var person in userPersons) { user.AddContactPerson(person.Name); } user.AssignDefaultPermission(DbSession); user.Setup(DbSession); var password = user.CreateInAd(Session); supplier.AddBillingComment(comment); Mailer.SupplierRegistred(supplier, comment); //Создание директорий для поставщика на фтп supplier.CreateDirs(); var log = new PasswordChangeLogEntity(user.Login); if (options.SendRegistrationCard) { log = SendRegistrationCard(log, user, password.Password, additionalEmailsForSendingCard); } string smsLog = ""; if (options.SendSmsToUser) { var phonesForSendToUserArray = user.GetPhonesForSendingSms().Select(x => x.Number).ToArray(); smsLog = smsLog + " " + ReportHelper.SendSmsPasswordToUser(user, password.Password, phonesForSendToUserArray); } if (options.SendSmsToAdmin) { var phonesForSendToAdminArray = GetPhoneSupportByRegionForSms(user.RootService.HomeRegion.Id); smsLog = smsLog + " " + ReportHelper.SendSmsToRegionalAdmin(user, password.Password, phonesForSendToAdminArray); } log.SmsLog = smsLog; DbSession.Save(log); if (options.FillBillingInfo) { Redirect("Register", "RegisterPayer", new { id = supplier.Payer.Id, showRegistrationCard = options.ShowRegistrationCard, passwordId = password.PasswordId }); } else if (supplier.Users.Count > 0 && options.ShowRegistrationCard) { Redirect("main", "report", new { id = supplier.Users.First().Id, passwordId = password.PasswordId }); } else { Notify("Регистрация завершена успешно"); Redirect("Suppliers", "Show", new { id = supplier.Id }); } }