Exemplo n.º 1
0
        /// <summary>
        /// Метод редактирования физ.лица БД
        /// </summary>
        /// <param name="selectedIndividual">выбранный клиент</param>
        /// <param name="lastName">фамилия</param>
        /// <param name="firstName">имя</param>
        /// <param name="middleName">отчество</param>
        /// <param name="series">серия паспорта</param>
        /// <param name="number">номер паспорта</param>
        /// <param name="address">адрес</param>
        /// <param name="phoneNumber">номер телефона</param>
        /// <param name="email">эмейл</param>
        /// <param name="cardName">наименование карты</param>
        /// <returns>признак успешного редактирования, сообщение</returns>
        public static (bool successfully, string message) EditIndividualFromDb(Individual selectedIndividual,
                                                                               string lastName, string firstName, string middleName,
                                                                               string series, string number,
                                                                               string address,
                                                                               string phoneNumber, string email,
                                                                               string cardName)
        {
            using (AppDbContext context = new AppDbContext())
            {
                var individual = context.Individuals.FirstOrDefault(c => c.Id == selectedIndividual.Id);
                var account    = context.Accounts.FirstOrDefault(c => c.Id == selectedIndividual.Account.Id);

                var(passport, contact) = CreateBaseRequisites(lastName, firstName, middleName, series, number, address, phoneNumber, email);

                //Проверка на совпадения в реквизитах
                var(noMatchesFound, message) = SearchForMatchesForEditing.IndividualErrorProcessing(individual, passport, contact);

                if (noMatchesFound)
                {
                    individual.Passport = passport;
                    individual.Contact  = contact;

                    if (cardName != selectedIndividual.Account.Card.CardName)
                    {
                        account.Card = SimpleCardFactory.CreateCard(cardName, selectedIndividual.Account.Card.CardBalance);
                    }

                    context.SaveChanges();
                    message = "Произведена операция редактирования:\n" +
                              $"Клиент: {individual.Passport.FullName.Name}\n" +
                              $"Карта: {selectedIndividual.Account.Card.CardName}\n" +
                              $"Номер: {selectedIndividual.Account.Card.CardNumber}\n" +
                              $"Статус: {(selectedIndividual.Account is RegularAccount ? "Стандарт" : "VIP")}\n" +
                              $"Дата: {DateTime.Now: dd/MM/yyyy HH:mm:ss}\n" +
                              "Отчет: Успешно";

                    ClientEdited?.Invoke(null, new EditClientEventArgs {
                        LogMessage = message
                    });
                }

                return(noMatchesFound, message);
            }
        }
Exemplo n.º 2
0
        /// <summary>
        /// Метод создания базовых реквизитов
        /// </summary>
        /// <param name="lastName">фамилия</param>
        /// <param name="firstName">имя</param>
        /// <param name="middleName">отчество</param>
        /// <param name="series">серия</param>
        /// <param name="number">номер</param>
        /// <param name="address">адрес</param>
        /// <param name="phoneNumber">номер телефона</param>
        /// <param name="email">эмейл</param>
        /// <param name="cardName">наименование карты</param>
        /// <param name="accountType">тип аккаунта</param>
        /// <returns>паспортные данные, контактные данные, аккаунт</returns>
        private static (Passport passport, Contact contact, Account account) CreateBaseRequisites(string lastName, string firstName, string middleName,
                                                                                                  string series, string number,
                                                                                                  string address,
                                                                                                  string phoneNumber, string email,
                                                                                                  string cardName, AccountType accountType)
        {
            //Паспортные данные
            var fullName        = FullNameFactory.CreateFullName(lastName, firstName, middleName);
            var seriesAndNumber = SeriesAndNumberFactory.CreateSeriesAndNumber(series, number);
            var passport        = PassportFactory.CreatePassport(fullName, seriesAndNumber, address);

            //Контактные данные
            var phone   = PhoneNumberFactory.CreateNumber(phoneNumber);
            var contact = ContactFactory.CreateContact(phone, email);

            //Данные аккаунта
            var card    = SimpleCardFactory.CreateCard(cardName, default);
            var deposit = new NullDeposit();
            var account = SimpleAccountFactory.CreateAccount(accountType, card, deposit);

            return(passport, contact, account);
        }