Esempio n. 1
0
        public WalletError SetPaymentWalletsBySystem(ProtectedOperationContext secCtx,
                                                     PaymentSystem syst,
                                                     List <UserPaymentSystem> actualPaySys,
                                                     string userLogin, string walletPwrd)
        {
            if (!UserSessionStorage.Instance.PermitUserOperation(secCtx, false, false))
            {
                return(WalletError.InsufficientRights);
            }

            try
            {
                using (var ctx = DatabaseContext.Instance.Make())
                {
                    var user = ctx.PLATFORM_USER.FirstOrDefault(u => u.Login == userLogin);
                    if (user == null)
                    {
                        return(WalletError.AuthenticationError);
                    }

                    // уничтожить старые записи того же типа
                    var existRecs =
                        ctx.USER_PAYMENT_SYSTEM.Where(r => r.UserId == user.ID && r.SystemPayment == (int)syst).ToList();
                    foreach (var rec in existRecs)
                    {
                        ctx.USER_PAYMENT_SYSTEM.Remove(rec);
                    }
                    ctx.SaveChanges();

                    // добавить новые записи
                    foreach (var paySyst in actualPaySys)
                    {
                        paySyst.UserId        = user.ID;
                        paySyst.SystemPayment = syst;
                        ctx.USER_PAYMENT_SYSTEM.Add(LinqToEntity.UndecorateUserPaymentSystem(paySyst));
                    }
                    ctx.SaveChanges();
                    return(WalletError.OK);
                }
            }
            catch (DbUpdateException ex)
            {
                if (ex.InnerException.InnerException is SqlException)
                {
                    Logger.Error("SetPaymentWalletsBySystem() error: возможно, запись с таким RootId и PurseId уже есть в таблице USER_PAYMENT_SYSTEM", ex);
                    return(WalletError.ServerSqlError);
                }
                Logger.Error("SetPaymentWalletsBySystem() error", ex);
                return(WalletError.ServerError);
            }
            catch (Exception ex)
            {
                Logger.Error("SetPaymentWalletsBySystem() error", ex);
                return(WalletError.ServerError);
            }
        }