private void FinancialDistrictSetActivation(FinancialDistrictsSet selectedDistrictsSet,
                                                    FinancialDistrictsSet activeFinancialDistrictSet)
        {
            if (activeFinancialDistrictSet != null)
            {
                activeFinancialDistrictSet.Status        = DistrictsSetStatus.Draft;
                activeFinancialDistrictSet.DateActivated = null;
                UoW.Save(activeFinancialDistrictSet);
            }

            selectedDistrictsSet.Status        = DistrictsSetStatus.Active;
            selectedDistrictsSet.DateActivated = DateTime.Now;

            UoW.Save(selectedDistrictsSet);
            UoW.Commit();
            Refresh();
        }
        private IJournalAction CreateDeleteRouteListAction()
        {
            return(new JournalAction(
                       "Удалить МЛ",
                       selectedItems => selectedItems.FirstOrDefault() is RouteListJournalNode node &&
                       CanDeleteRouteList(node),
                       selectedItems => true,
                       selectedItems =>
            {
                if (!(selectedItems.FirstOrDefault() is RouteListJournalNode selectedNode))
                {
                    return;
                }

                var routeList = UoW.Session.QueryOver <RouteList>()
                                .Where(x => x.Id == selectedNode.Id)
                                .SingleOrDefault <RouteList>();

                var orders = new List <Order>();

                foreach (var address in routeList.Addresses)
                {
                    UoW.Session.Refresh(address.Order);
                    if (address.Order.OrderStatus == OrderStatus.OnLoading ||
                        address.Order.OrderStatus == OrderStatus.InTravelList)
                    {
                        orders.Add(address.Order);
                    }
                }

                if (!DeleteHelper.DeleteEntity.Invoke(typeof(RouteList), selectedNode.Id))
                {
                    return;
                }

                foreach (var order in orders)
                {
                    order.ChangeStatusAndCreateTasks(OrderStatus.Accepted, _callTaskWorker);
                    UoW.Save(order);
                }

                UoW.Commit();
                Refresh();
            }
                       ));
        }
예제 #3
0
        public void Repo_EmailQueue_UpdateV1_Success()
        {
            var data = new TestDataFactory(UoW);

            data.Destroy();
            data.CreateEmails();

            var email = UoW.EmailQueue.Get(QueryExpressionFactory.GetQueryExpression <tbl_EmailQueue>().ToLambda())
                        .First();

            email.Subject += "(Updated)";

            var result = UoW.EmailQueue.Update(email);

            UoW.Commit();

            result.Should().BeAssignableTo <tbl_EmailQueue>();
        }
예제 #4
0
        public void Repo_TextQueue_UpdateV1_Success()
        {
            var data = new TestDataFactory(UoW);

            data.Destroy();
            data.CreateTexts();

            var text = UoW.TextQueue.Get(QueryExpressionFactory.GetQueryExpression <tbl_TextQueue>().ToLambda())
                       .First();

            text.Body += "(Updated)";

            var result = UoW.TextQueue.Update(text);

            UoW.Commit();

            result.Should().BeAssignableTo <tbl_TextQueue>();
        }
예제 #5
0
        public void Repo_MOTDs_CreateV1_Success()
        {
            var data = new TestDataFactory(UoW);

            data.Destroy();
            data.CreateMOTDs();

            var result = UoW.MOTDs.Create(
                Mapper.Map <tbl_MOTD>(new MOTDTssV1
            {
                author = TestDefaultConstants.MOTDAuthor,
                quote  = "Quote-" + Base64.CreateString(4),
            }));

            UoW.Commit();

            result.Should().BeAssignableTo <tbl_MOTD>();
        }
예제 #6
0
        void UpdateNorms(EmployeeProcessingJournalNode[] nodes)
        {
            var progressPage = NavigationManager.OpenViewModel <ProgressWindowViewModel>(null);
            var progress     = progressPage.ViewModel.Progress;

            progress.Start(nodes.Length + 2, text: "Загружаем сотрудников");
            var employees = UoW.GetById <EmployeeCard>(nodes.Select(x => x.Id));

            progress.Add(text: "Загружаем нормы");
            var norms = normRepository.GetNormsForPost(UoW, employees.Select(x => x.Post).Where(x => x != null).Distinct().ToArray());

            int step = 0;

            foreach (var employee in employees)
            {
                progress.Add(text: $"Обработка {employee.ShortName}");
                if (employee.Post == null)
                {
                    Results[employee.Id] = "Отсутствует должность";
                    continue;
                }
                var norm = norms.FirstOrDefault(x => x.IsActive && x.Posts.Contains(employee.Post));
                if (norm != null)
                {
                    step++;
                    employee.UsedNorms.Clear();
                    employee.AddUsedNorm(norm);
                    UoW.Save(employee);
                    Results[employee.Id] = "ОК";
                    if (step % 10 == 0)
                    {
                        UoW.Commit();
                    }
                }
                else
                {
                    Results[employee.Id] = "Подходящая норма не найдена";
                }
            }
            progress.Add(text: "Готово");
            UoW.Commit();
            NavigationManager.ForceClosePage(progressPage, CloseSource.FromParentPage);
            Refresh();
        }
예제 #7
0
        void UpdateNextIssue(EmployeeProcessingJournalNode[] nodes)
        {
            var progressPage = NavigationManager.OpenViewModel <ProgressWindowViewModel>(null);
            var progress     = progressPage.ViewModel.Progress;

            loggerProcessing.Info($"Пересчет даты следующией выдачи для {nodes.Length} сотрудников");
            loggerProcessing.Info($"База данных: {dataBaseInfo.Name}");

            progress.Start(nodes.Length + 1, text: "Загружаем сотрудников");
            var employees = UoW.GetById <EmployeeCard>(nodes.Select(x => x.Id));

            int step = 0;

            foreach (var employee in employees)
            {
                progress.Add(text: $"Обработка {employee.ShortName}");
                step++;
                var oldDates = employee.WorkwearItems.Select(x => x.NextIssue).ToArray();
                employee.UpdateNextIssueAll();
                var changes = employee.WorkwearItems.Select((x, i) => x.NextIssue?.Date != oldDates[i]?.Date ? $"Изменена дата следующей выдачи с {oldDates[i]:d} на {x.NextIssue:d} для потребности [{x.Title}]" : null)
                              .Where(x => x != null).ToArray();
                if (changes.Length > 0)
                {
                    Results[employee.Id] = NumberToTextRus.FormatCase(changes.Length, "изменена {0} строка", "изменено {0} строки", "изменено {0} строк");
                    foreach (var message in changes)
                    {
                        loggerProcessing.Info(message);
                    }
                }
                else
                {
                    Results[employee.Id] = "Без изменений";
                }
                UoW.Save(employee);
                if (step % 10 == 0)
                {
                    UoW.Commit();
                }
            }
            progress.Add(text: "Готово");
            UoW.Commit();
            NavigationManager.ForceClosePage(progressPage, CloseSource.FromParentPage);
            Refresh();
        }
예제 #8
0
        public void Repo_Logins_UpdateV1_Success()
        {
            var data = new TestDataFactory(UoW);

            data.Destroy();
            data.CreateLogins();

            var login = UoW.Logins.Get(QueryExpressionFactory.GetQueryExpression <tbl_Login>()
                                       .Where(x => x.Name == TestDefaultConstants.LoginName).ToLambda())
                        .Single();

            login.Name += "(Updated)";

            var result = UoW.Logins.Update(login);

            UoW.Commit();

            result.Should().BeAssignableTo <tbl_Login>();
        }
예제 #9
0
        public void Repo_Logins_CreateV1_Success()
        {
            var data = new TestDataFactory(UoW);

            data.Destroy();
            data.CreateLogins();

            var result = UoW.Logins.Create(
                Mapper.Map <tbl_Login>(new LoginV1()
            {
                Name        = TestDefaultConstants.LoginName,
                LoginKey    = TestDefaultConstants.LoginKey,
                IsDeletable = true,
            }));

            UoW.Commit();

            result.Should().BeAssignableTo <tbl_Login>();
        }
예제 #10
0
        public async Task<bool> CancelBooking(string token)
        {

            try
            {
                var booking = await UoW.Repository<Booking>().GetAsync(b => b.ReservationToken == token);
                if (booking == null) return false;
                booking.Canceled = true;

                UoW.Commit();
                return true;
            }
            catch (Exception ex)
            {
                var msg = $"{ex.Message} : {ex.InnerException}";
                Console.WriteLine(msg);
            }
            return false;
        }
예제 #11
0
        public void Repo_Audiences_UpdateV1_Success()
        {
            var data = new TestDataFactory(UoW);

            data.Destroy();
            data.CreateAudiences();

            var audience = UoW.Audiences.Get(QueryExpressionFactory.GetQueryExpression <E_Audience>()
                                             .Where(x => x.Name == TestDefaultConstants.AudienceName).ToLambda())
                           .Single();

            audience.Name += "(Updated)";

            var result = UoW.Audiences.Update(audience);

            UoW.Commit();

            result.Should().BeAssignableTo <E_Audience>();
        }
예제 #12
0
        public void Repo_MOTDs_UpdateV1_Success()
        {
            var data = new TestDataFactory(UoW);

            data.Destroy();
            data.CreateMOTDs();

            var MOTD = UoW.MOTDs.Get(QueryExpressionFactory.GetQueryExpression <tbl_MOTD>()
                                     .Where(x => x.Author == TestDefaultConstants.MOTDAuthor).ToLambda())
                       .First();

            MOTD.Quote += "(Updated)";

            var result = UoW.MOTDs.Update(MOTD);

            UoW.Commit();

            result.Should().BeAssignableTo <tbl_MOTD>();
        }
예제 #13
0
        public void Repo_Users_CreateV1_Success()
        {
            var result = UoW.Users.Create(
                Mapper.Map <tbl_User>(new UserV1()
            {
                UserName     = TestDefaultConstants.UserName,
                Email        = TestDefaultConstants.UserName,
                PhoneNumber  = NumberAs.CreateString(11),
                FirstName    = "First-" + Base64.CreateString(4),
                LastName     = "Last-" + Base64.CreateString(4),
                IsLockedOut  = false,
                IsHumanBeing = true,
                IsDeletable  = false,
            }));

            UoW.Commit();

            result.Should().BeAssignableTo <tbl_User>();
        }
예제 #14
0
        public void Repo_Issuers_UpdateV1_Success()
        {
            var data = new TestDataFactory(UoW);

            data.Destroy();
            data.CreateIssuers();

            var issuer = UoW.Issuers.Get(QueryExpressionFactory.GetQueryExpression <E_Issuer>()
                                         .Where(x => x.Name == TestDefaultConstants.IssuerName).ToLambda())
                         .Single();

            issuer.Name += "(Updated)";

            var result = UoW.Issuers.Update(issuer);

            UoW.Commit();

            result.Should().BeAssignableTo <E_Issuer>();
        }
예제 #15
0
        public void Repo_Claims_UpdateV1_Success()
        {
            var data = new TestDataFactory(UoW);

            data.Destroy();
            data.CreateClaims();

            var claim = UoW.Claims.Get(QueryExpressionFactory.GetQueryExpression <uvw_Claim>()
                                       .Where(x => x.Type == TestDefaultConstants.ClaimName).ToLambda())
                        .Single();

            claim.Value += "(Updated)";

            var result = UoW.Claims.Update(claim);

            UoW.Commit();

            result.Should().BeAssignableTo <uvw_Claim>();
        }
        private void CreateCopyAction()
        {
            var copyAction = new JournalAction("Копировать",
                                               selectedItems => canCreate && selectedItems.OfType <DistrictsSetJournalNode>().FirstOrDefault() != null,
                                               selected => true,
                                               selected => {
                var selectedNode = selected.OfType <DistrictsSetJournalNode>().FirstOrDefault();
                if (selectedNode == null)
                {
                    return;
                }
                var districtsSetToCopy    = UoW.GetById <DistrictsSet>(selectedNode.Id);
                var alreadyCopiedDistrict = UoW.Session.QueryOver <District>().WhereRestrictionOn(x => x.CopyOf.Id).IsIn(districtsSetToCopy.Districts.Select(x => x.Id).ToArray()).Take(1).SingleOrDefault();
                if (alreadyCopiedDistrict != null)
                {
                    commonServices.InteractiveService.ShowMessage(ImportanceLevel.Warning,
                                                                  $"Выбранная версия районов уже была скопирована\nКопия: (Код: {alreadyCopiedDistrict.DistrictsSet.Id}) {alreadyCopiedDistrict.DistrictsSet.Name}");
                    return;
                }

                if (commonServices.InteractiveService.Question($"Скопировать версию районов \"{selectedNode.Name}\""))
                {
                    var copy   = (DistrictsSet)districtsSetToCopy.Clone();
                    copy.Name += " - копия";
                    if (copy.Name.Length > DistrictsSet.NameMaxLength)
                    {
                        copy.Name = copy.Name.Remove(DistrictsSet.NameMaxLength);
                    }
                    copy.Author      = employeeRepository.GetEmployeeForCurrentUser(UoW);
                    copy.Status      = DistrictsSetStatus.Draft;
                    copy.DateCreated = DateTime.Now;

                    UoW.Save(copy);
                    UoW.Commit();
                    commonServices.InteractiveService.ShowMessage(ImportanceLevel.Info, "Копирование завершено");
                    Refresh();
                }
            }
                                               );

            NodeActionsList.Add(copyAction);
        }
        public FileModel Update(FileModel entity)
        {
            if (entity != null)
            {
                try
                {
                    File category = _mapper.Map <File>(entity);
                    _repo.Update(category);

                    UoW.Commit();
                    return(entity);
                }
                catch (Exception)
                {
                    UoW.RollBack();
                    return(null);
                }
            }
            return(null);
        }
예제 #18
0
        public SubCategoryModel Update(SubCategoryModel entity)
        {
            if (entity != null)
            {
                try
                {
                    SubCategory subCategory = _mapper.Map <SubCategory>(entity);
                    _repo.Update(subCategory);

                    UoW.Commit();
                    return(entity);
                }
                catch (Exception)
                {
                    UoW.RollBack();
                    return(null);
                }
            }
            return(null);
        }
        public TodoModel Update(TodoModel entity)
        {
            if (entity != null)
            {
                try
                {
                    Todo todo = _mapper.Map <Todo>(entity);
                    _repo.Update(todo);

                    UoW.Commit();
                    return(entity);
                }
                catch (Exception)
                {
                    UoW.RollBack();
                    return(null);
                }
            }
            return(null);
        }
예제 #20
0
        public LinkModel Update(LinkModel entity)
        {
            if (entity != null)
            {
                try
                {
                    Link link = _mapper.Map <Link>(entity);
                    _repo.Update(link);

                    UoW.Commit();
                    return(entity);
                }
                catch (Exception)
                {
                    UoW.RollBack();
                    return(null);
                }
            }
            return(null);
        }
예제 #21
0
        public void Repo_Issuers_CreateV1_Success()
        {
            var data = new TestDataFactory(UoW);

            data.Destroy();
            data.CreateIssuers();

            var result = UoW.Issuers.Create(
                Mapper.Map <E_Issuer>(new IssuerV1()
            {
                Name        = TestDefaultConstants.IssuerName,
                IssuerKey   = TestDefaultConstants.IssuerKey,
                IsEnabled   = true,
                IsDeletable = true,
            }));

            UoW.Commit();

            result.Should().BeAssignableTo <E_Issuer>();
        }
예제 #22
0
        public override bool Save()
        {
            var valid = new QSValidation.QSValidator <CarLoadDocument> (UoWGeneric.Root);

            if (valid.RunDlgIfNotValid((Gtk.Window) this.Toplevel))
            {
                return(false);
            }

            Entity.LastEditor     = Repository.EmployeeRepository.GetEmployeeForCurrentUser(UoW);
            Entity.LastEditedTime = DateTime.Now;
            if (Entity.LastEditor == null)
            {
                MessageDialogWorks.RunErrorDialog("Ваш пользователь не привязан к действующему сотруднику, вы не можете изменять складские документы, так как некого указывать в качестве кладовщика.");
                return(false);
            }

            if (Entity.Items.Any(x => x.Amount == 0))
            {
                if (MessageDialogWorks.RunQuestionDialog("В списке есть нулевые позиции. Убрать нулевые позиции перед сохранением?"))
                {
                    Entity.ClearItemsFromZero();
                }
            }

            Entity.UpdateOperations(UoW);

            logger.Info("Сохраняем погрузочный талон...");
            UoWGeneric.Save();

            logger.Info("Меняем статус маршрутного листа...");
            if (Entity.RouteList.ShipIfCan(UoW))
            {
                MessageDialogWorks.RunInfoDialog("Маршрутный лист отгружен полностью.");
            }
            UoW.Save(Entity.RouteList);
            UoW.Commit();

            logger.Info("Ok.");
            return(true);
        }
예제 #23
0
        private List <OrderLine> CreateOrderLines(long orderId, IList <OrderlineDto> orderLines)
        {
            try
            {
                var orderLinesMap = Mapper.Map <List <OrderLine> >(orderLines).Select(c =>
                {
                    c.IdOrder = orderId;
                    c.OrderDishExtraIngredient = new List <OrderDishExtraIngredient>();
                    c = UoW.Repository <OrderLine>().Create(c);
                    UoW.Commit();
                    return(c);
                });

                return(orderLinesMap.ToList());
            }
            catch (Exception ex)
            {
                Console.WriteLine($"{ex.Message} : {ex.InnerException}");
                throw ex;
            }
        }
        protected void ReplyButton_Click(object sender, EventArgs e)
        {
            string userId = Request.UserHostAddress;

            using (UoW.Create())
            {
                Post   post    = Posts.GetById(PostId);
                string name    = NameTextbox.Text;
                string email   = EmailTextbox.Text;
                string website = WebsiteTextbox.Text;
                string body    = CommentTextbox.Text;

                post.ReplyTo(new UserInfo(name, website, email, userId), body);

                UoW.Commit();
                NameTextbox.Text    = "";
                EmailTextbox.Text   = "";
                WebsiteTextbox.Text = "";
                CommentTextbox.Text = "";
            }
        }
예제 #25
0
        public async Task<BookingResponseDto> CreateReservationAndGuestList(int bookingDtoType, string bookingDtoName, int reservationDtoAssistants, IList<string> reservationDtoGuestList, string reservationDtoEmail, DateTime reservationDtoDate, long? userId)
        {
            try
            {
                var reservation = CreateReservation(bookingDtoType, bookingDtoName, reservationDtoAssistants, reservationDtoEmail, reservationDtoDate, userId);
                //we add the organizer as guest if the invitation is GuestBooking type
                if (bookingDtoType != 0) reservationDtoGuestList.Add(reservationDtoEmail);

                var invitationGuestList = CreateInvitationGuests(reservation.Id, reservationDtoGuestList, reservationDtoEmail);
                UoW.Commit();

                await SendReservationEmail(bookingDtoType, bookingDtoName, reservationDtoAssistants, invitationGuestList, reservationDtoEmail, reservationDtoDate, reservation);
                return Mapper.Map<BookingResponseDto>(reservation);
            }
            catch (Exception ex)
            {
                var msg = $"{ex.Message} : {ex.InnerException}";
                Console.WriteLine(msg);
                throw ex;
            }
        }
예제 #26
0
        private Order CreateOrder(string bookingToken)
        {
            var order = new Order();

            try
            {
                var booking = GetBooking(bookingToken);
                if (booking == null)
                {
                    throw new Exception("No booking");
                }

                var bookingtype = bookingToken.StartsWith("CB") ? OrderTypeEnum.CommonBooking : OrderTypeEnum.GuestBooking;
                var orders      = UoW.Repository <Order>().GetAll(o => o.IdReservation == booking.Id || o.IdInvitationGuest == booking.Id);

                if (orders != null && orders.Count > 0)
                {
                    throw new Exception("The order already exists");
                }
                else
                {
                    order = bookingtype == OrderTypeEnum.CommonBooking ? new Order {
                        IdReservation = booking.Id
                    }
                } : new Order {
                    IdInvitationGuest = booking.Id
                };;

                order = UoW.Repository <Order>().Create(order);

                UoW.Commit();

                return(order);
            }
            catch (Exception ex)
            {
                Console.WriteLine($"{ex.Message} : {ex.InnerException}");
                throw ex;
            }
        }
예제 #27
0
        private List <InvitedGuest> CreateInvitationGuests(long bookingId, IList <string> guestList, string userEmail)
        {
            var result = new List <InvitedGuest>();

            foreach (var mail in guestList.Distinct())
            {
                var item = new InvitedGuest()
                {
                    IdBooking        = bookingId,
                    Email            = mail,
                    Accepted         = null,
                    ModificationDate = DateTime.Now,
                    GuestToken       = GetReservationToken(BookingTypeConst.GuestBooking, userEmail)
                };

                UoW.Repository <InvitedGuest>().Create(item);
                result.Add(item);
            }
            UoW.Commit();

            return(result);
        }
예제 #28
0
        public void Repo_States_UpdateV1_Success()
        {
            var data = new TestDataFactory(UoW);

            data.Destroy();
            data.CreateUserStates();

            var user = UoW.Users.Get(QueryExpressionFactory.GetQueryExpression <tbl_User>()
                                     .Where(x => x.UserName == TestDefaultConstants.UserName).ToLambda())
                       .Single();

            var state = UoW.States.Get(QueryExpressionFactory.GetQueryExpression <tbl_State>()
                                       .Where(x => x.UserId == user.Id).ToLambda())
                        .First();

            state.StateConsume = true;

            var result = UoW.States.Update(state);

            UoW.Commit();

            result.Should().BeAssignableTo <tbl_State>();
        }
예제 #29
0
        public void Repo_AuthActivity_CreateV1_Success()
        {
            var data = new TestDataFactory(UoW);

            data.Destroy();
            data.CreateAudiences();

            var audience = UoW.Audiences.Get(QueryExpressionFactory.GetQueryExpression <tbl_Audience>()
                                             .Where(x => x.Name == TestDefaultConstants.AudienceName).ToLambda())
                           .Single();

            var result = UoW.AuthActivity.Create(
                Mapper.Map <tbl_AuthActivity>(new AuthActivityV1()
            {
                AudienceId   = audience.Id,
                LoginType    = GrantFlowType.ClientCredentialV2.ToString(),
                LoginOutcome = GrantFlowResultType.Success.ToString(),
            }));

            UoW.Commit();

            result.Should().BeAssignableTo <tbl_AuthActivity>();
        }
예제 #30
0
        private bool Save(bool needClose = true)
        {
            var valid = new QSValidator <UndeliveredOrder>(UndeliveredOrder);

            if (valid.RunDlgIfNotValid((Window)this.Toplevel))
            {
                return(false);
            }

            if (UndeliveredOrder.Id == 0)
            {
                UndeliveredOrder.OldOrder.SetUndeliveredStatus(UoW, _baseParametersProvider, CallTaskWorker);
            }
            undeliveryView.BeforeSaving();
            //случай, если создавать новый недовоз не нужно, но нужно обновить старый заказ
            if (!CanCreateUndelivery())
            {
                UoW.Save(UndeliveredOrder.OldOrder);
                UoW.Commit();
                this.OnCloseTab(false);
                return(false);
            }

            UoW.Save(UndeliveredOrder);
            if (UndeliveredOrder.NewOrder != null &&
                UndeliveredOrder.OrderTransferType == TransferType.AutoTransferNotApproved &&
                UndeliveredOrder.NewOrder.OrderStatus != OrderStatus.Canceled)
            {
                ProcessSmsNotification();
            }

            if (needClose)
            {
                this.OnCloseTab(false);
            }
            return(true);
        }
예제 #31
0
파일: UoWTest.cs 프로젝트: Cheranga/DAL
        public void When_Exception_Occured_Must_Return_DataResult_With_Exception()
        {
            //
            // Arrange
            //
            var mockContext = new Mock<EFDbContext>();
            var mockRepoFactory = new Mock<IRepositoryFactory>();
            Action action = () =>
            {
                throw new Exception();
            };

            var uow = new UoW(mockContext.Object, mockRepoFactory.Object);
            //
            // Act
            //
            var result = uow.Commit(action);
            //
            // Assert
            //
            mockContext.Verify(x=>x.SaveChanges(), Times.Never);
            Assert.IsNotNull(result);
            Assert.IsNotNull(result.Exception);
        }
예제 #32
0
파일: UoWTest.cs 프로젝트: Cheranga/DAL
        public void When_Passed_An_Action_To_Commit_That_Action_Must_Execute()
        {
            //
            // Arrange
            //
            var mockContext = new Mock<EFDbContext>();
            var mockRepoFactory = new Mock<IRepositoryFactory>();
            var mockAction = new Mock<Action>();

            var uow = new UoW(mockContext.Object, mockRepoFactory.Object);
            //
            // Act
            //
            uow.Commit(mockAction.Object);
            //
            // Assert
            //
            mockAction.Verify(x => x(), Times.Once);
        }