public ProfileCreditContract[] InsertCreditTransaction(CreditTransactionContract[] d)
        {
            lock (MDB)
            {
                try
                {
                    if (d != null && d.Any())
                    {
                        foreach (var x in d)
                        {
                            if (x.CreditTransaction.TransactionTime == default(DateTime))
                            {
                                x.CreditTransaction.TransactionTime = DateTime.UtcNow;
                            }

                            var ct = new DB.CreditTransaction();
                            x.CreditTransaction.CopyTo(ct, false);
                            MDB.CreditTransactions.InsertOnSubmit(ct);
                        }

                        //Recalculate ballance
                        var affectedBallances = new Code.BallanceManager().RecalcBallance(MDB, MDB.GetChangeSet().Inserts.OfType <DB.CreditTransaction>());

                        MDB.SubmitChanges();

                        return(affectedBallances.Select(x => new ProfileCreditContract()
                        {
                            ProfileCredit = x
                        }).ToArray());
                    }
                }
                catch (Exception ex)
                {
                    HandleMyException(ex);
                }

                return(new ProfileCreditContract[] { });
            }
        }
        public ProfileCreditContract[] UpdateCreditTransaction(CreditTransactionContract[] d, bool allowDefaultValues = true)
        {
            lock (MDB)
            {
                try
                {
                    if (d.Any(l => l.CreditTransaction.CreditTransactionId == default(long)))
                    {
                        throw new Xxception("CreditTransactionId expected");
                    }

                    List <DB.ProfileCredit> recalculatedProfileCredits = new List <DB.ProfileCredit>();
                    foreach (var x in d)
                    {
                        var xx = MDB.CreditTransactions.First(p => p.LocationId == x.CreditTransaction.CreditTransactionId);

                        //Recalculate balance
                        var recalculatedProfileCredit = new Code.BallanceManager().ReplaceCreditTransaction(MDB, xx, x.CreditTransaction);
                        recalculatedProfileCredits.Add(recalculatedProfileCredit);

                        //Finish update
                        x.CreditTransaction.CopyTo(xx, allowDefaultValues);
                    }

                    MDB.SubmitChanges();
                    return(recalculatedProfileCredits.Select(x => new ProfileCreditContract()
                    {
                        ProfileCredit = x
                    }).ToArray());
                }
                catch (Exception ex)
                {
                    HandleMyException(ex);
                    return(null);
                }
            }
        }