Пример #1
0
        public static bool UpdateVipCardModelAndDetails(List <VipCardDetailModel> details, string activityName, string activityId, int clientId)
        {
            bool result = true;

            using (var dbHelper = new SqlDbHelper(ConnectionHelper.GetDecryptConn("Gungnir")))
            {
                try
                {
                    //dbHelper.BeginTransaction();
                    var clientName   = GetBatchesByClientId(clientId).Select(r => r.ClientName).FirstOrDefault();
                    var detailbefore = DalVipCard.GetVipCardDetailsByActivityId(activityId);
                    var cardId       = DalVipCard.GetVipCardIdByActivityId(activityId);
                    var batchIds     = details.Select(r => r.BatchId).ToList();

                    var IsNeedUpdateAct = false;

                    #region log

                    var batchIdBefores = detailbefore.Select(r => r.BatchId).ToList();
                    var actNamebefore  = detailbefore.Select(r => r.ActivityName).FirstOrDefault();
                    var deleteBatches  = batchIdBefores.Except(batchIds);
                    var addBatches     = batchIds.Except(batchIdBefores);
                    if (actNamebefore != activityName)
                    {
                        IsNeedUpdateAct = true;
                        var before = actNamebefore;
                        var after  = activityName;
                        OpertionLogs(OpertionType.EditEdit, before, after, activityId);
                    }
                    if (deleteBatches.Any() && batchIds.Any())
                    {
                        var before = string.Join(",", deleteBatches);
                        OpertionLogs(OpertionType.EditDelete, before, "", activityId);
                    }
                    if (addBatches.Any())
                    {
                        var after = string.Join(",", addBatches);
                        OpertionLogs(OpertionType.EditAdd, "", after, activityId);
                    }

                    #endregion

                    if (IsNeedUpdateAct)
                    {
                        DalVipCard.UpdateVipCardModel(activityName, activityId, dbHelper);
                    }
                    if (batchIds.Any())
                    {
                        var uDetail1 = DalVipCard.SetVipCardModelDetailStatus(cardId, batchIds, dbHelper);

                        var list = details.Select(r =>
                        {
                            r.ClientName = clientName;
                            r.ClientId   = clientId;

                            return(r);
                        }).ToList();
                        var uDetails2 = DalVipCard.UpdateVipCardModelDetails(cardId, list, dbHelper);
                    }
                }

                catch (Exception ex)
                {
                    result = false;
                    logger.Error(ex.Message, ex);
                }
            }
            return(result);
        }