示例#1
0
        public void TestGetCreate()
        {
            var entity = new Rate();

            entity.Id = "testId";

            _repository.Create(entity);

            Assert.Equal(entity, _repository.GetById("testId"));
        }
示例#2
0
        public ActionResult RegisterJuridicalPerson(JuridicalPersonRegistrationViewModel model)
        {
            try
            {
                if (!ModelState.IsValid)
                {
                    var firstError = ModelState.Values.Where(x => x.Errors.Any()).FirstOrDefault();

                    ValidationUtils.IsNull(firstError, firstError.Errors.FirstOrDefault().ErrorMessage);
                }

                var currentDateTime = DateTimeUtils.GetCurrentDateTime();

                var juridicalAddressCityId = ValidationUtils.TryGetShort(model.JuridicalAddressCityId, "Неверное значение входного параметра.");
                var postalAddressCityId    = ValidationUtils.TryGetShort(model.PostalAddressCityId, "Неверное значение входного параметра.");
                var rateId = ValidationUtils.TryGetShort(model.RateId, "Неверное значение входного параметра.");

                var extraUserCount                = ValidationUtils.TryGetShort(model.ExtraUserCount);
                var extraTeamCount                = ValidationUtils.TryGetShort(model.ExtraTeamCount);
                var extraStorageCount             = ValidationUtils.TryGetShort(model.ExtraStorageCount);
                var extraAccountOrganizationCount = ValidationUtils.TryGetShort(model.ExtraAccountOrganizationCount);
                var extraGigabyteCount            = ValidationUtils.TryGetShort(model.ExtraGigabyteCount);

                using (IUnitOfWork uow = unitOfWorkFactory.Create(IsolationLevel.Serializable))
                {
                    var juridicalAddressCity = cityRepository.GetById(juridicalAddressCityId);
                    ValidationUtils.NotNull(juridicalAddressCity, "Город не найден.");

                    var juridicalAddress = new Address(juridicalAddressCity, model.JuridicalAddressPostalIndex, model.JuridicalAddressLocalAddress);

                    var rate = rateRepository.GetById(rateId);
                    ValidationUtils.NotNull(rate, "Тариф не найден.");

                    Address postalAddress = null;

                    if (model.PostalAddressEqualsJuridical)
                    {
                        postalAddress = new Address(juridicalAddress.City, juridicalAddress.PostalIndex, juridicalAddress.LocalAddress);
                    }
                    else
                    {
                        var postalAddressCity = cityRepository.GetById(postalAddressCityId);
                        ValidationUtils.NotNull(postalAddressCityId, "Город не найден.");

                        postalAddress = new Address(postalAddressCity, model.PostalAddressPostalIndex, model.PostalAddressLocalAddress);
                    }

                    var client = new JuridicalPerson(model.ShortName, juridicalAddress, postalAddress, model.INN,
                                                     model.DirectorPost, model.DirectorName, currentDateTime);

                    client.AdminEmail    = model.AdminEmail;
                    client.DBServerName  = AppSettings.ClientDBServerName;
                    client.DirectorEmail = model.DirectorEmail;
                    client.KPP           = model.KPP;
                    client.OGRN          = model.OGRN;
                    client.OKPO          = model.OKPO;
                    client.Phone         = model.Phone;
                    client.PromoCode     = model.PromoCode;

                    clientRepository.Save(client);

                    client.DBName = "bizpulse_" + client.Number.ToString();

                    var admin = new ClientUser(model.AdminLastName, model.AdminFirstName, model.AdminLogin, CryptographyUtils.ComputeHash(model.AdminPassword),
                                               true, currentDateTime);
                    admin.Patronymic = model.AdminPatronymic;

                    client.AddUser(admin);

                    // добавление первого набора услуг и первой услуги в набор
                    client.CreateInitialServiceSet(client, rate, extraUserCount, extraTeamCount, extraStorageCount,
                                                   extraAccountOrganizationCount, extraGigabyteCount, currentDateTime);

                    uow.Commit();

                    // создание БД клиента
                    CreateClientDatabase(client, currentDateTime);

                    // отправка письма о регистрации
                    SendRegistrationLetter(client, admin, model.AdminPassword);

                    return(Content(client.Id.ToString()));
                }
            }
            catch (Exception ex)
            {
                return(Content(ProcessException(ex)));
            }
        }