Beispiel #1
0
        public static AccessLogRepository GetAccessLogRepository(IUnitOfWork unitOfWork)
        {
            var repository = new AccessLogRepository();

            repository.UnitOfWork = unitOfWork;
            return(repository);
        }
Beispiel #2
0
        public static AccessLogRepository GetAccessLogRepository()
        {
            var repository = new AccessLogRepository();

            repository.UnitOfWork = GetUnitOfWork();
            return(repository);
        }
Beispiel #3
0
 public BaseBiz()
 {
     db = new NetkaCommitmentContext();
     oAccessTokenRepository = new AccessTokenRepository();
     oAccessLogRepository   = new AccessLogRepository();
 }
Beispiel #4
0
        public override ExecuteResultEntity <Manufacturers> Update(Manufacturers fromModel, bool isLastRecord = true)
        {
            try
            {
                using (var ManufacturersRepository = RepositoryHelper.GetManufacturersRepository(database))
                {
                    AccessLogRepository accesslog = RepositoryHelper.GetAccessLogRepository();
                    var LoginedUser = GetCurrentLoginUser();

                    var dbm = (from q in ManufacturersRepository.All()
                               where q.Id == fromModel.Id
                               select q).SingleOrDefault();

                    if (dbm != null)
                    {
                        CheckAndUpdateValue(fromModel, dbm);



                        var toDel    = dbm.Contacts.Select(s => s.Id).Except(fromModel.Contacts.Select(s => s.Id)).ToList();
                        var toAdd    = fromModel.Contacts.Select(s => s.Id).Except(dbm.Contacts.Select(s => s.Id)).ToList();
                        var samerows = dbm.Contacts.Select(s => s.Id).Intersect(fromModel.Contacts.Select(s => s.Id)).ToList();

                        Stack <Contacts> RemoveStack = new Stack <Contacts>();
                        Stack <Contacts> AddStack    = new Stack <Contacts>();

                        foreach (var delitem in toDel)
                        {
                            RemoveStack.Push(dbm.Contacts.Where(w => w.Id == delitem).Single());
                        }

                        foreach (var additem in toAdd)
                        {
                            AddStack.Push(fromModel.Contacts.Where(w => w.Id == additem).Single());
                        }

                        while (RemoveStack.Count > 0)
                        {
                            dbm.Contacts.Remove(RemoveStack.Pop());
                        }

                        while (AddStack.Count > 0)
                        {
                            dbm.Contacts.Add(AddStack.Pop());
                        }

                        foreach (var sameitem in samerows)
                        {
                            Contacts Source = fromModel.Contacts.Where(w => w.Id == sameitem).Single();
                            Contacts Target = dbm.Contacts.Where(w => w.Id == sameitem).Single();
                            CheckAndUpdateValue(Source, Target);
                        }
                    }

                    ManufacturersRepository.UnitOfWork.Commit();

                    accesslog.Add(new AccessLog()
                    {
                        ActionCode = (Byte)ActionCodes.Update,
                        CreateTime = DateTime.Now,
                        DataId     = dbm.Id.ToString("N"),
                        Reason     = "更新資料",
                        UserId     = LoginedUser.Result.UserId
                    });



                    var rtn = Query(w => w.Id == fromModel.Id);
                    return(ExecuteResultEntity <Manufacturers> .CreateResultEntity(rtn.Result.SingleOrDefault()));
                }
            }
            catch (Exception ex)
            {
                return(ExecuteResultEntity <Manufacturers> .CreateErrorResultEntity(ex));
            }
        }
        public override ExecuteResultEntity <Manufacturers> Update(Manufacturers fromModel, bool isLastRecord = true)
        {
            try
            {
                var ManufacturersRepository = RepositoryHelper.GetManufacturersRepository();


                AccessLogRepository accesslog = RepositoryHelper.GetAccessLogRepository(database);

                //var LoginedUser = GetCurrentLoginUser();

                var dbm = (from q in ManufacturersRepository.All()
                           where q.Id == fromModel.Id
                           select q).SingleOrDefault();

                if (dbm != null)
                {
                    CheckAndUpdateValue(fromModel, dbm);

                    var toDel    = dbm.Contacts.Select(s => s.Id).Except(fromModel.Contacts.Select(s => s.Id)).ToList();
                    var toAdd    = fromModel.Contacts.Select(s => s.Id).Except(dbm.Contacts.Select(s => s.Id)).ToList();
                    var samerows = dbm.Contacts.Select(s => s.Id).Intersect(fromModel.Contacts.Select(s => s.Id)).ToList();

                    Stack <Contacts> RemoveStack = new Stack <Contacts>();
                    Stack <Contacts> AddStack    = new Stack <Contacts>();

                    foreach (var delitem in toDel)
                    {
                        RemoveStack.Push(dbm.Contacts.Where(w => w.Id == delitem).Single());
                    }

                    foreach (var additem in toAdd)
                    {
                        AddStack.Push(fromModel.Contacts.Where(w => w.Id == additem).Single());
                    }

                    while (RemoveStack.Count > 0)
                    {
                        dbm.Contacts.Remove(RemoveStack.Pop());
                    }

                    while (AddStack.Count > 0)
                    {
                        dbm.Contacts.Add(AddStack.Pop());
                    }

                    foreach (var sameitem in samerows)
                    {
                        Contacts Source = fromModel.Contacts.Where(w => w.Id == sameitem).Single();
                        Contacts Target = dbm.Contacts.Where(w => w.Id == sameitem).Single();
                        CheckAndUpdateValue(Source, Target);
                    }

                    var repo2 = RepositoryHelper.GetManufacturersBussinessItemsRepository();

                    var toDelBI    = repo2.Where(w => w.ManufacturersId == dbm.Id).Select(s => s.Id).Except(fromModel.ManufacturersBussinessItems.Select(s => s.Id)).ToList();
                    var toAddBI    = fromModel.ManufacturersBussinessItems.Select(s => s.Id).Except(repo2.Where(w => w.ManufacturersId == dbm.Id).Select(s => s.Id)).ToList();
                    var samerowsBI = dbm.ManufacturersBussinessItems.Select(s => s.Id).Intersect(fromModel.ManufacturersBussinessItems.Select(s => s.Id)).ToList();


                    Stack <ManufacturersBussinessItems> RemoveStackBI = new Stack <ManufacturersBussinessItems>();
                    Stack <ManufacturersBussinessItems> AddStackBI    = new Stack <ManufacturersBussinessItems>();

                    bool isuserepo2 = false;

                    foreach (var delitem in toDelBI)
                    {
                        RemoveStackBI.Push(repo2.Where(w => w.Id == delitem).Single());
                    }

                    foreach (var additem in toAddBI)
                    {
                        AddStackBI.Push(fromModel.ManufacturersBussinessItems.Where(w => w.Id == additem).ToList().Single());
                    }

                    while (RemoveStackBI.Count > 0)
                    {
                        isuserepo2 = true;
                        repo2.Delete(RemoveStackBI.Pop());
                        //dbm.ManufacturersBussinessItems.Remove();
                    }

                    while (AddStackBI.Count > 0)
                    {
                        isuserepo2 = true;
                        var en = AddStackBI.Pop();
                        repo2.Add(new ManufacturersBussinessItems()
                        {
                            Id = en.Id,
                            ManufacturersId      = en.ManufacturersId,
                            MaterialCategoriesId = en.MaterialCategoriesId,
                            PaymentTypeId        = en.PaymentTypeId,
                            Name                    = en.Name,
                            TicketPeriodId          = en.TicketPeriodId,
                            TranscationCategoriesId = en.TranscationCategoriesId
                        });
                        //dbm.ManufacturersBussinessItems.Add(AddStackBI.Pop());
                    }

                    if (isuserepo2)
                    {
                        repo2.UnitOfWork.Commit();
                    }

                    foreach (var sameitem in samerowsBI)
                    {
                        ManufacturersBussinessItems Source = fromModel.ManufacturersBussinessItems.Where(w => w.Id == sameitem).Single();
                        ManufacturersBussinessItems Target = dbm.ManufacturersBussinessItems.Where(w => w.Id == sameitem).Single();
                        Target.ManufacturersId      = Source.ManufacturersId;
                        Target.MaterialCategoriesId = Source.MaterialCategoriesId;
                        Target.Name                    = Source.Name;
                        Target.PaymentTypeId           = Source.PaymentTypeId;
                        Target.TicketPeriodId          = Source.TicketPeriodId;
                        Target.TranscationCategoriesId = Source.TranscationCategoriesId;
                    }
                }

                ManufacturersRepository.UnitOfWork.Commit();

                //accesslog.Add(new AccessLog()
                //{
                //    ActionCode = (Byte)ActionCodes.Update,
                //    CreateTime = DateTime.Now,
                //    DataId = dbm.Id.ToString("N"),
                //    Reason = "更新資料",
                //    UserId = LoginedUser.Result.UserId
                //});

                var rtn = Query(w => w.Id == fromModel.Id);
                return(ExecuteResultEntity <Manufacturers> .CreateResultEntity(rtn.Result.SingleOrDefault()));
            }
            catch (Exception ex)
            {
                return(ExecuteResultEntity <Manufacturers> .CreateErrorResultEntity(ex));
            }
        }
 public void SetUp()
 {
     this.accessLogRepository = new AccessLogRepository(this.connection);
 }