public async Task <VerifyRecordResult> BeforeDeleteCheckAsync(TravelExpenseAdapterModel paraObject)
        {
            CleanTrackingHelper.Clean <TravelExpenseDetail>(context);
            TravelExpenseDetail item = await context.TravelExpenseDetail
                                       .AsNoTracking()
                                       .FirstOrDefaultAsync(x => x.TravelExpenseId == paraObject.Id);

            if (item != null)
            {
                return(VerifyRecordResultFactory.Build(false, ErrorMessageEnum.該紀錄無法刪除因為有其他資料表在使用中));
            }
            return(VerifyRecordResultFactory.Build(true));
        }
        public async Task <VerifyRecordResult> BeforeDeleteCheckAsync(SystemLogAdapterModel paraObject)
        {
            CleanTrackingHelper.Clean <OrderItem>(context);
            var searchItem = await context.SystemLog
                             .AsNoTracking()
                             .FirstOrDefaultAsync(x => x.Id == paraObject.Id);

            if (searchItem == null)
            {
                return(VerifyRecordResultFactory.Build(false, ErrorMessageEnum.無法刪除紀錄_要刪除的紀錄已經不存在資料庫上));
            }
            return(VerifyRecordResultFactory.Build(true));
        }
Exemplo n.º 3
0
        public async Task <VerifyRecordResult> AddAsync(ProductAdapterModel paraObject)
        {
            Product itemParameter = Mapper.Map <Product>(paraObject);

            CleanTrackingHelper.Clean <Product>(context);
            await context.Product
            .AddAsync(itemParameter);

            await context.SaveChangesAsync();

            CleanTrackingHelper.Clean <Product>(context);
            return(VerifyRecordResultFactory.Build(true));
        }
        public async Task <VerifyRecordResult> AddAsync(LeaveCategoryAdapterModel paraObject)
        {
            LeaveCategory itemParameter = Mapper.Map <LeaveCategory>(paraObject);

            CleanTrackingHelper.Clean <LeaveCategory>(context);
            await context.LeaveCategory
            .AddAsync(itemParameter);

            await context.SaveChangesAsync();

            CleanTrackingHelper.Clean <LeaveCategory>(context);
            return(VerifyRecordResultFactory.Build(true));
        }
        public async Task <VerifyRecordResult> BeforeDeleteCheckAsync(LeaveCategoryAdapterModel paraObject)
        {
            CleanTrackingHelper.Clean <LeaveForm>(context);
            LeaveForm item = await context.LeaveForm
                             .AsNoTracking()
                             .FirstOrDefaultAsync(x => x.LeaveCategoryId == paraObject.Id);

            if (item != null)
            {
                return(VerifyRecordResultFactory.Build(false, ErrorMessageEnum.該紀錄無法刪除因為有其他資料表在使用中));
            }
            return(VerifyRecordResultFactory.Build(true));
        }
        public async Task <VerifyRecordResult> AddAsync(OrderItemAdapterModel paraObject)
        {
            OrderItem itemParameter = Mapper.Map <OrderItem>(paraObject);

            CleanTrackingHelper.Clean <OrderItem>(context);
            await context.OrderItem
            .AddAsync(itemParameter);

            await context.SaveChangesAsync();

            CleanTrackingHelper.Clean <OrderItem>(context);
            return(VerifyRecordResultFactory.Build(true));
        }
        public async Task <VerifyRecordResult> AddAsync(TravelExpenseAdapterModel paraObject)
        {
            TravelExpense itemParameter = Mapper.Map <TravelExpense>(paraObject);

            CleanTrackingHelper.Clean <TravelExpense>(context);
            await context.TravelExpense
            .AddAsync(itemParameter);

            await context.SaveChangesAsync();

            CleanTrackingHelper.Clean <TravelExpense>(context);
            return(VerifyRecordResultFactory.Build(true));
        }
Exemplo n.º 8
0
        public async Task ChangePassword(MyUserAdapterModel myUserAdapterModel, string newPassword)
        {
            string encodePassword =
                PasswordHelper.GetPasswordSHA(myUserAdapterModel.Salt, newPassword);

            myUserAdapterModel.Password = encodePassword;
            var myUser = Mapper.Map <MyUser>(myUserAdapterModel);

            CleanTrackingHelper.Clean <MyUser>(context);
            context.Entry(myUser).State = EntityState.Modified;
            await context.SaveChangesAsync();

            CleanTrackingHelper.Clean <MyUser>(context);
        }
        public async Task <VerifyRecordResult> BeforeUpdateCheckAsync(WorkOrderAdapterModel paraObject)
        {
            CleanTrackingHelper.Clean <WorkOrder>(context);
            var searchItem = await context.WorkOrder
                             .AsNoTracking()
                             .FirstOrDefaultAsync(x => x.Id == paraObject.Id);

            if (searchItem == null)
            {
                return(VerifyRecordResultFactory.Build(false, ErrorMessageEnum.要更新的紀錄_發生同時存取衝突_已經不存在資料庫上));
            }

            return(VerifyRecordResultFactory.Build(true));
        }
        public async Task <MyUserAdapterModel> UserByAccount(string account)
        {
            CleanTrackingHelper.Clean <MyUser>(context);
            MyUser             user             = new();
            MyUserAdapterModel userAdapterModel = new();

            user = await context.MyUser
                   .AsNoTracking()
                   .FirstOrDefaultAsync(x => x.Account == account);

            userAdapterModel = Mapper.Map <MyUserAdapterModel>(user);
            CleanTrackingHelper.Clean <MyUser>(context);
            return(userAdapterModel);
        }
Exemplo n.º 11
0
        public async Task MailReadedAsync(FlowInboxAdapterModel flowInboxAdapterModel)
        {
            CleanTrackingHelper.Clean <FlowInbox>(context);
            CleanTrackingHelper.Clean <FlowMaster>(context);
            CleanTrackingHelper.Clean <MyUser>(context);
            flowInboxAdapterModel.IsRead = true;
            var flowInbox = Mapper.Map <FlowInbox>(flowInboxAdapterModel);

            context.FlowInbox.Update(flowInbox);
            await context.SaveChangesAsync();

            CleanTrackingHelper.Clean <FlowInbox>(context);
            CleanTrackingHelper.Clean <FlowMaster>(context);
            CleanTrackingHelper.Clean <MyUser>(context);
        }
        public async Task DenyAsync(FlowMasterAdapterModel flowMasterAdapterModel,
                                    ApproveOpinionModel approveOpinionModel)
        {
            CleanTrackingHelper.Clean <FlowMaster>(context);
            CleanTrackingHelper.Clean <FlowUser>(context);
            CleanTrackingHelper.Clean <FlowHistory>(context);
            CleanTrackingHelper.Clean <MyUser>(context);

            (var flowUsers, var user) = await GetUsersDataAsync(flowMasterAdapterModel);

            if (CheckCurrentActionUser(flowUsers, user, flowMasterAdapterModel) == false)
            {
                return;
            }

            RecoveryCompletion(flowUsers, flowMasterAdapterModel.ProcessLevel);

            flowMasterAdapterModel.ProcessLevel--;
            RecoveryCompletion(flowUsers, flowMasterAdapterModel.ProcessLevel);
            CopyUserAutoCompletion(flowUsers, flowMasterAdapterModel.ProcessLevel);

            if (flowMasterAdapterModel.ProcessLevel > 0)
            {
            }
            else
            {
                flowMasterAdapterModel.Status = 0;
            }

            FindNextActionUser(flowUsers, flowMasterAdapterModel);

            await context.BulkUpdateAsync(flowUsers);

            await UpdateAsync(flowMasterAdapterModel);

            await AddHistoryRecord(user, flowMasterAdapterModel,
                                   $"{approveOpinionModel.Summary}", $"{approveOpinionModel.Comment}", false);

            #region 產生收件匣紀錄
            await NotifyInboxUsers(flowUsers, flowMasterAdapterModel, flowMasterAdapterModel.ProcessLevel);

            #endregion

            CleanTrackingHelper.Clean <FlowMaster>(context);
            CleanTrackingHelper.Clean <FlowUser>(context);
            CleanTrackingHelper.Clean <FlowHistory>(context);
            CleanTrackingHelper.Clean <MyUser>(context);
        }
        async Task OhterDependencyData(ExceptionRecordAdapterModel data)
        {
            if (data.MyUserId != null)
            {
                CleanTrackingHelper.Clean <MyUser>(context);
                var user = await context.MyUser
                           .AsNoTracking()
                           .FirstOrDefaultAsync(x => x.Id == data.MyUserId);

                if (user != null)
                {
                    data.MyUserName = user.Name;
                }
            }
            return;
        }
        public async Task EnableIt(PhaseCategoryAdapterModel paraObject)
        {
            await Task.Delay(100);

            PhaseCategory curritem = await context.PhaseCategory
                                     .AsNoTracking()
                                     .FirstOrDefaultAsync(x => x.Id == paraObject.Id);

            CleanTrackingHelper.Clean <PhaseCategory>(context);
            curritem.Enable = true;
            context.Entry(curritem).State = EntityState.Modified;
            await context.SaveChangesAsync();

            CleanTrackingHelper.Clean <PhaseCategory>(context);
            return;
        }
        public async Task <VerifyRecordResult> AddAsync(WorkingLogDetailAdapterModel paraObject)
        {
            WorkingLogDetail itemParameter = Mapper.Map <WorkingLogDetail>(paraObject);

            CleanTrackingHelper.Clean <WorkingLogDetail>(context);
            await context.WorkingLogDetail
            .AddAsync(itemParameter);

            await context.SaveChangesAsync();

            var id = itemParameter.WorkingLogId;

            CleanTrackingHelper.Clean <WorkingLogDetail>(context);
            await CountingWorkingHour(id);

            return(VerifyRecordResultFactory.Build(true));
        }
Exemplo n.º 16
0
        public async Task DisableIt(CategoryMainAdapterModel paraObject)
        {
            await Task.Delay(100);

            CategoryMain curritem = await context.CategoryMain
                                    .AsNoTracking()
                                    .FirstOrDefaultAsync(x => x.Id == paraObject.Id);

            CleanTrackingHelper.Clean <CategoryMain>(context);
            curritem.Enable = false;
            //context.Entry(curritem).State = EntityState.Modified;
            context.Update(curritem);
            await context.SaveChangesAsync();

            CleanTrackingHelper.Clean <CategoryMain>(context);
            return;
        }
        public async Task <VerifyRecordResult> BeforeUpdateCheckAsync(MyUserAdapterModel paraObject)
        {
            if (paraObject.Account.ToLower() == MagicHelper.開發者帳號)
            {
                return(VerifyRecordResultFactory.Build(false, ErrorMessageEnum.開發者帳號不可以被修改));
            }

            CleanTrackingHelper.Clean <MyUser>(context);
            var searchItem = await context.MyUser
                             .AsNoTracking()
                             .FirstOrDefaultAsync(x => x.Id == paraObject.Id);

            if (searchItem == null)
            {
                return(VerifyRecordResultFactory.Build(false, ErrorMessageEnum.要更新的紀錄_發生同時存取衝突_已經不存在資料庫上));
            }

            searchItem = await context.MyUser
                         .AsNoTracking()
                         .FirstOrDefaultAsync(x => x.Id == paraObject.Id);

            if (searchItem != null)
            {
                if (searchItem.Account.ToLower() == MagicHelper.開發者帳號)
                {
                    return(VerifyRecordResultFactory.Build(false, ErrorMessageEnum.開發者帳號不可以被修改));
                }
            }
            else
            {
                return(VerifyRecordResultFactory.Build(false, ErrorMessageEnum.要更新的紀錄_發生同時存取衝突_已經不存在資料庫上));
            }

            searchItem = await context.MyUser
                         .AsNoTracking()
                         .FirstOrDefaultAsync(x => x.Account == paraObject.Account &&
                                              x.Id != paraObject.Id);

            if (searchItem != null)
            {
                return(VerifyRecordResultFactory.Build(false, ErrorMessageEnum.要修改的紀錄已經存在無法修改));
            }

            return(VerifyRecordResultFactory.Build(true));
        }
        public async Task <VerifyRecordResult> BeforeAddCheckAsync(MenuDataAdapterModel paraObject)
        {
            CleanTrackingHelper.Clean <MenuData>(context);
            if (paraObject.MenuRoleId == 0)
            {
                return(VerifyRecordResultFactory.Build(false, ErrorMessageEnum.尚未輸入功能表的角色));
            }
            var item = await context.MenuData
                       .AsNoTracking()
                       .FirstOrDefaultAsync(x => x.MenuRoleId == paraObject.MenuRoleId &&
                                            x.Name == paraObject.Name);

            if (item != null)
            {
                return(VerifyRecordResultFactory.Build(false, ErrorMessageEnum.該功能項目已經存在該功能表的角色));
            }
            return(VerifyRecordResultFactory.Build(true));
        }
Exemplo n.º 19
0
        public async Task <VerifyRecordResult> BeforeAddCheckAsync(PolicyDetailAdapterModel paraObject)
        {
            CleanTrackingHelper.Clean <PolicyDetail>(context);
            if (paraObject.MyUserId == 0)
            {
                return(VerifyRecordResultFactory.Build(false, "需要指定一個使用者"));
            }
            var item = await context.PolicyDetail
                       .AsNoTracking()
                       .FirstOrDefaultAsync(x => x.PolicyHeaderId == paraObject.PolicyHeaderId &&
                                            x.MyUserId == paraObject.MyUserId);

            if (item != null)
            {
                return(VerifyRecordResultFactory.Build(false, "同一個簽核政策內,使用者不能重複指定"));
            }
            return(VerifyRecordResultFactory.Build(true));
        }
Exemplo n.º 20
0
        public async Task <VerifyRecordResult> BeforeAddCheckAsync(OrderItemAdapterModel paraObject)
        {
            CleanTrackingHelper.Clean <OrderItem>(context);
            if (paraObject.ProductId == 0)
            {
                return(VerifyRecordResultFactory.Build(false, ErrorMessageEnum.尚未輸入該訂單要用到的產品));
            }
            var item = await context.OrderItem
                       .AsNoTracking()
                       .FirstOrDefaultAsync(x => x.OrderMasterId == paraObject.OrderMasterId &&
                                            x.ProductId == paraObject.ProductId);

            if (item != null)
            {
                return(VerifyRecordResultFactory.Build(false, ErrorMessageEnum.該訂單已經存在該產品_不能重複同樣的商品在一訂單內));
            }
            return(VerifyRecordResultFactory.Build(true));
        }
Exemplo n.º 21
0
        public async Task <VerifyRecordResult> AddAsync(ExceptionRecordAdapterModel paraObject)
        {
            ExceptionRecord itemParameter = Mapper.Map <ExceptionRecord>(paraObject);

            CleanTrackingHelper.Clean <ExceptionRecord>(context);
            try
            {
                await context.ExceptionRecord
                .AddAsync(itemParameter);

                await context.SaveChangesAsync();
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
            CleanTrackingHelper.Clean <ExceptionRecord>(context);
            return(VerifyRecordResultFactory.Build(true));
        }
        public async Task <bool> CheckUserShowActionAsync(FlowMasterAdapterModel flowMasterAdapterModel,
                                                          CurrentUser currentUser)
        {
            CleanTrackingHelper.Clean <FlowMaster>(context);
            CleanTrackingHelper.Clean <FlowUser>(context);
            CleanTrackingHelper.Clean <FlowHistory>(context);
            CleanTrackingHelper.Clean <MyUser>(context);

            (var flowUsers, var user) = await GetUsersDataByActionAsync(flowMasterAdapterModel, currentUser);

            flowMasterAdapterModel.UserShowAction = CheckCurrentActionUser(flowUsers, user, flowMasterAdapterModel);

            CleanTrackingHelper.Clean <FlowMaster>(context);
            CleanTrackingHelper.Clean <FlowUser>(context);
            CleanTrackingHelper.Clean <FlowHistory>(context);
            CleanTrackingHelper.Clean <MyUser>(context);

            return(flowMasterAdapterModel.UserShowAction);
        }
        public async Task <VerifyRecordResult> BeforeUpdateCheckAsync(PhaseMessageAdapterModel paraObject)
        {
            CleanTrackingHelper.Clean <PhaseMessage>(context);
            if (paraObject.PhaseCategoryId == 0)
            {
                return(VerifyRecordResultFactory.Build(false, "需要指定一個片語分類"));
            }

            var searchItem = await context.PhaseMessage
                             .AsNoTracking()
                             .FirstOrDefaultAsync(x => x.Id == paraObject.Id);

            if (searchItem == null)
            {
                return(VerifyRecordResultFactory.Build(false, ErrorMessageEnum.要更新的紀錄_發生同時存取衝突_已經不存在資料庫上));
            }

            return(VerifyRecordResultFactory.Build(true));
        }
        public async Task <VerifyRecordResult> AddAsync(MyUserAdapterModel paraObject)
        {
            try
            {
                MyUser itemParameter = Mapper.Map <MyUser>(paraObject);
                CleanTrackingHelper.Clean <MyUser>(context);
                await context.MyUser
                .AddAsync(itemParameter);

                await context.SaveChangesAsync();

                CleanTrackingHelper.Clean <MyUser>(context);
                return(VerifyRecordResultFactory.Build(true));
            }
            catch (Exception ex)
            {
                Logger.LogError(ex, "新增記錄發生例外異常");
                return(VerifyRecordResultFactory.Build(false, "新增記錄發生例外異常", ex));
            }
        }
Exemplo n.º 25
0
        public async Task <bool> DeleteAsync(Order paraObject)
        {
            Order item = await context.Order
                         .AsNoTracking()
                         .FirstOrDefaultAsync(x => x.OrderId == paraObject.OrderId);

            if (item == null)
            {
                return(false);
            }
            else
            {
                CleanTrackingHelper.Clean <Order>(context);
                context.Entry(paraObject).State = EntityState.Deleted;
                await context.SaveChangesAsync();

                CleanTrackingHelper.Clean <Order>(context);
                return(true);
            }
        }
Exemplo n.º 26
0
        public async Task <bool> DeleteAsync(StudentGrade paraObject)
        {
            StudentGrade item = await context.StudentGrade
                                .AsNoTracking()
                                .FirstOrDefaultAsync(x => x.EnrollmentId == paraObject.EnrollmentId);

            if (item == null)
            {
                return(false);
            }
            else
            {
                CleanTrackingHelper.Clean <StudentGrade>(context);
                context.Entry(item).State = EntityState.Deleted;
                await context.SaveChangesAsync();

                CleanTrackingHelper.Clean <StudentGrade>(context);
                return(true);
            }
        }
Exemplo n.º 27
0
        private async Task <List <Product> > 建立產品紀錄Async()
        {
            CleanTrackingHelper.Clean <Product>(context);
            CleanTrackingHelper.Clean <OrderMaster>(context);
            CleanTrackingHelper.Clean <OrderItem>(context);
            List <Product> products = new List <Product>();

            for (int i = 0; i < 10; i++)
            {
                Product product = new Product()
                {
                    Name = $"Product{i}"
                };
                products.Add(product);
                context.Add(product);
            }
            await context.SaveChangesAsync();

            return(products);
        }
        public async Task SendAsync(FlowMasterAdapterModel flowMasterAdapterModel,
                                    ApproveOpinionModel approveOpinionModel)
        {
            CleanTrackingHelper.Clean <FlowMaster>(context);
            CleanTrackingHelper.Clean <FlowUser>(context);
            CleanTrackingHelper.Clean <FlowHistory>(context);
            CleanTrackingHelper.Clean <MyUser>(context);
            (var flowUsers, var user) = await GetUsersDataAsync(flowMasterAdapterModel);

            if (user.Id != flowMasterAdapterModel.MyUserId)
            {
                return;
            }

            var flowUser = flowUsers.FirstOrDefault(x => x.Level == 0);

            flowUser.Completion = true;
            flowMasterAdapterModel.ProcessLevel = 1;
            flowMasterAdapterModel.Status       = 1;

            CopyUserAutoCompletion(flowUsers, flowMasterAdapterModel.ProcessLevel);

            FindNextActionUser(flowUsers, flowMasterAdapterModel);

            await context.BulkUpdateAsync(flowUsers);

            await UpdateAsync(flowMasterAdapterModel);

            await AddHistoryRecord(user, flowMasterAdapterModel,
                                   $"{approveOpinionModel.Summary}", $"{approveOpinionModel.Comment}", true);

            #region 產生收件匣紀錄
            await NotifyInboxUsers(flowUsers, flowMasterAdapterModel, flowMasterAdapterModel.ProcessLevel);

            #endregion

            CleanTrackingHelper.Clean <FlowMaster>(context);
            CleanTrackingHelper.Clean <FlowUser>(context);
            CleanTrackingHelper.Clean <FlowHistory>(context);
            CleanTrackingHelper.Clean <MyUser>(context);
        }
        public async Task BackToSendAsync(FlowMasterAdapterModel flowMasterAdapterModel,
                                          ApproveOpinionModel approveOpinionModel)
        {
            CleanTrackingHelper.Clean <FlowMaster>(context);
            CleanTrackingHelper.Clean <FlowUser>(context);
            CleanTrackingHelper.Clean <FlowHistory>(context);
            CleanTrackingHelper.Clean <MyUser>(context);

            (var flowUsers, var user) = await GetUsersDataAsync(flowMasterAdapterModel);

            if (CheckCurrentActionUser(flowUsers, user, flowMasterAdapterModel) == false)
            {
                return;
            }

            foreach (var item in flowUsers)
            {
                item.Completion = false;
            }
            flowMasterAdapterModel.ProcessLevel = 0;
            flowMasterAdapterModel.Status       = 0;

            FindNextActionUser(flowUsers, flowMasterAdapterModel);

            await context.BulkUpdateAsync(flowUsers);

            await UpdateAsync(flowMasterAdapterModel);

            await AddHistoryRecord(user, flowMasterAdapterModel,
                                   $"{approveOpinionModel.Summary}", $"{approveOpinionModel.Comment}", false);

            #region 產生收件匣紀錄
            await NotifyInboxUsers(flowUsers, flowMasterAdapterModel, flowMasterAdapterModel.ProcessLevel);

            #endregion

            CleanTrackingHelper.Clean <FlowMaster>(context);
            CleanTrackingHelper.Clean <FlowUser>(context);
            CleanTrackingHelper.Clean <FlowHistory>(context);
            CleanTrackingHelper.Clean <MyUser>(context);
        }
        async Task CountingWorkingHour(int WorkingLogId)
        {
            CleanTrackingHelper.Clean <WorkingLog>(context);
            var totalHours = await context.WorkingLogDetail
                             .AsNoTracking()
                             .Where(x => x.WorkingLogId == WorkingLogId)
                             .SumAsync(x => x.Hours);

            var item = await context.WorkingLog
                       .AsNoTracking()
                       .FirstOrDefaultAsync(x => x.Id == WorkingLogId);

            if (item != null)
            {
                item.TotalHours = totalHours;
                context.Update(item);
                await context.SaveChangesAsync();

                CleanTrackingHelper.Clean <WorkingLog>(context);
            }
        }