Exemplo n.º 1
0
 public override void Update(Subdivision sub)
 {
     var greedySub = sub as GreedySubdivision;
     if (greedySub == null)
     {
         Console.WriteLine("Attempted reference to a null GreedySubdivision.");
         return;
     }
     greedySub.ScanTriangle(this);
 }
Exemplo n.º 2
0
        public List<Subdivision> GetSubDivisions()
        {
            subdivisions.Clear();
            string orgname = GetOrgnameExtention();

            if (orgname != null)
            {
                spraw = Environment.CurrentDirectory + "\\SPRAW." + orgname;
                int jm = GetLastSubDivisionsNumber();

                using (FileStream fs = new FileStream(spraw, FileMode.Open, FileAccess.Read))
                {
                    int i = 0;
                    byte[] buf2 = new byte[2];
                    byte[] buf20 = new byte[20];

                    while ((i < jm) && (jm > 0))
                    {
                        Subdivision subdiv = new Subdivision();

                        fs.Seek(96 + 2 * i, SeekOrigin.Begin);
                        fs.Read(buf2, 0, 2);
                        subdiv.WorkersCount = BitConverter.ToInt16(buf2, 0);

                        if (subdiv.WorkersCount != 0)
                        {
                            fs.Seek(200 + i * 20, SeekOrigin.Begin);
                            fs.Read(buf20, 0, 20);
                        }

                        subdiv.Id = i++ + 1;
                        subdiv.Name =
                            Encoding.UTF8.GetString(Encoding.Convert(Encoding.GetEncoding(866), Encoding.UTF8, buf20));
                        subdivisions.Add(subdiv);
                    }
                }
                return this.subdivisions;
            }
            return null;
        }
Exemplo n.º 3
0
 public HierarchicalPresetSubdivisionPermission GetPresetSubdivisionPermission(IUnitOfWork uow, Subdivision subdivision, string permission)
 {
     return(uow.Session.QueryOver <HierarchicalPresetSubdivisionPermission>()
            .Where(x => x.Subdivision.Id == subdivision.Id && x.PermissionName == permission)
            .SingleOrDefault());
 }
Exemplo n.º 4
0
        public void FromPolygonsTriforce()
        {
            PointD[][] polygons =
            {
                new[] { new PointD(-5, -4), new PointD(0,  6), new PointD(5, -4) },
                new[] { new PointD(0,   0), new PointD(-1, 2), new PointD(1,  2) }
            };
            var division = Subdivision.FromPolygons(polygons);

            division.Validate();

            var divisionPolygons = division.ToPolygons();

            Assert.AreEqual(polygons.Length, divisionPolygons.Length);
            CollectionAssert.AreEquivalent(polygons[0], divisionPolygons[0]);
            CollectionAssert.AreEquivalent(polygons[1], divisionPolygons[1]);

            var edges = division.Edges.Values;
            var faces = division.Faces.Values;

            CollectionAssert.AreEqual(new[] {
                new VertexPair(polygons[0][0], edges[0]),
                new VertexPair(polygons[0][2], edges[3]),
                new VertexPair(polygons[1][0], edges[6]),
                new VertexPair(polygons[1][1], edges[7]),
                new VertexPair(polygons[1][2], edges[9]),
                new VertexPair(polygons[0][1], edges[1]),
            }, division.Vertices);

            CollectionAssert.AreEqual(new[] {
                new SubdivisionEdge(0, polygons[0][0], edges[1], faces[0], edges[2], edges[4]),
                new SubdivisionEdge(1, polygons[0][1], edges[0], faces[1], edges[5], edges[3]),
                new SubdivisionEdge(2, polygons[0][1], edges[3], faces[0], edges[4], edges[0]),
                new SubdivisionEdge(3, polygons[0][2], edges[2], faces[1], edges[1], edges[5]),
                new SubdivisionEdge(4, polygons[0][2], edges[5], faces[0], edges[0], edges[2]),
                new SubdivisionEdge(5, polygons[0][0], edges[4], faces[1], edges[3], edges[1]),
                new SubdivisionEdge(6, polygons[1][0], edges[7], faces[1], edges[8], edges[10]),
                new SubdivisionEdge(7, polygons[1][1], edges[6], faces[2], edges[11], edges[9]),
                new SubdivisionEdge(8, polygons[1][1], edges[9], faces[1], edges[10], edges[6]),
                new SubdivisionEdge(9, polygons[1][2], edges[8], faces[2], edges[7], edges[11]),
                new SubdivisionEdge(10, polygons[1][2], edges[11], faces[1], edges[6], edges[8]),
                new SubdivisionEdge(11, polygons[1][0], edges[10], faces[2], edges[9], edges[7]),
            }, edges);

            CollectionAssert.AreEqual(new[] {
                new SubdivisionFace(division, 0, null, new[] { edges[0] }),
                new SubdivisionFace(division, 1, edges[1], new[] { edges[6] }),
                new SubdivisionFace(division, 2, edges[7], null),
            }, faces);

            PointD centroid = new PointD(0, -2 / 3.0);

            CheckFace(edges[0], polygons[0], -50, centroid);
            Array.Reverse(polygons[0]);
            CheckFace(edges[3], polygons[0], +50, centroid);

            centroid = new PointD(0, 4 / 3.0);
            CheckFace(edges[6], polygons[1], -2, centroid);
            Array.Reverse(polygons[1]);
            CheckFace(edges[9], polygons[1], +2, centroid);

            var cycles = division.GetZeroAreaCycles();

            Assert.AreEqual(0, cycles.Count);
        }
Exemplo n.º 5
0
 public async Task DeleteSubdivisionAsync(Subdivision Subdivision)
 {
     _context.Subdivisions.Remove(Subdivision);
     await _context.SaveChangesAsync();
 }
Exemplo n.º 6
0
 private void MapForUpdateentity(Subdivision entity, DA.Subdivision daEntity)
 {
     daEntity.Id = entity.Id;
 }
Exemplo n.º 7
0
 private void FillLocations(Subdivision subdivision)
 {
     if (subdivision == null) return;
     AvailableLocations = new ObservableCollection<Location>(locationService.GetLocationsBySubdivisionId(subdivision.Id));
 }
Exemplo n.º 8
0
 private Country(string name, string twoLetterCode, string threeLetterCode, string numericCode, Subdivision[] subdivisions)
 {
     Name = name;
     TwoLetterCode = twoLetterCode;
     ThreeLetterCode = threeLetterCode;
     NumericCode = numericCode;
     this.Subdivisions = subdivisions;
 }
Exemplo n.º 9
0
        public void ChangeValueInDB(int index, int id, string name, string lastName, string secondName, DateTime birthDate, Gender gender, Subdivision subdivision)
        {
            if (index >= 0 && index < employees.Count)
            {
                using (var session = NHibernateHelper.OpenSession())
                {
                    using (var transaction = session.BeginTransaction())
                    {
                        var emp = session.QueryOver <Emp>().List();

                        foreach (var e in emp)
                        {
                            if (e.ID == id)
                            {
                                e.ID          = id;
                                e.Name        = name;
                                e.LastName    = lastName;
                                e.SecondName  = secondName;
                                e.BirthDate   = birthDate;
                                e.Genders     = gender;
                                e.Subdivision = (subdivision == null) ? 0 : subdivision.ID;

                                session.Update(e);
                            }
                        }

                        transaction.Commit();
                    }
                }

                RaisePropertyChanged("Name");
            }
        }
Exemplo n.º 10
0
 public void ChangeValue(int index, int id, string name, string lastName, string secondName, DateTime birthDate, Gender gender, Subdivision subdivision)
 {
     if (index >= 0 && index < employees.Count)
     {
         employees.RemoveAt(index);
         employees.Insert(index, new Employee
         {
             ID          = id,
             Name        = name,
             LastName    = lastName,
             SecondName  = secondName,
             BirthDate   = birthDate,
             Genders     = gender,
             Subdivision = subdivision
         });
         RaisePropertyChanged("Name");
     }
 }
Exemplo n.º 11
0
        public void AddValueToDB(string name, string lastName, string secondName, DateTime birthDate, Gender gender, Subdivision subdivision)
        {
            using (var session = NHibernateHelper.OpenSession())
            {
                using (var transaction = session.BeginTransaction())
                {
                    Emp emp = new Emp();
                    emp.Name        = name;
                    emp.LastName    = lastName;
                    emp.SecondName  = secondName;
                    emp.BirthDate   = birthDate;
                    emp.Genders     = gender;
                    emp.Subdivision = (subdivision == null) ? 0 : subdivision.ID;

                    session.Save(emp);

                    transaction.Commit();
                }
            }
        }
Exemplo n.º 12
0
        public void AddValue(int id, string name, string lastName, string secondName, DateTime birthDate, Gender gender, Subdivision subdivision)
        {
            employees.Add(new Employee
            {
                ID          = id,
                Name        = name,
                LastName    = lastName,
                SecondName  = secondName,
                BirthDate   = birthDate,
                Genders     = gender,
                Subdivision = subdivision
            });

            RaisePropertyChanged("Name");
        }
Exemplo n.º 13
0
        public Dictionary <FuelType, decimal> GetAllFuelsBalanceForSubdivision(IUnitOfWork uow, Subdivision subdivision)
        {
            if (uow == null)
            {
                throw new ArgumentNullException(nameof(uow));
            }

            if (subdivision == null)
            {
                throw new ArgumentNullException(nameof(subdivision));
            }

            FuelType             fuelTypeAlias             = null;
            FuelExpenseOperation fuelExpenseOperationAlias = null;
            FuelIncomeOperation  fuelIncomeOperationAlias  = null;
            Subdivision          expenseSubdivisionAlias   = null;
            Subdivision          incomeSubdivisionAlias    = null;

            var fuelExpenseSubquery = QueryOver.Of <FuelExpenseOperation>(() => fuelExpenseOperationAlias)
                                      .Left.JoinAlias(() => fuelExpenseOperationAlias.RelatedToSubdivision, () => expenseSubdivisionAlias)
                                      .Where(() => fuelExpenseOperationAlias.FuelType.Id == fuelTypeAlias.Id)
                                      .Where(() => expenseSubdivisionAlias.Id == subdivision.Id)
                                      .Select(Projections.Sum(Projections.Property(() => fuelExpenseOperationAlias.FuelLiters)))
                                      .DetachedCriteria;

            var fuelIncomeSubquery = QueryOver.Of <FuelIncomeOperation>(() => fuelIncomeOperationAlias)
                                     .Left.JoinAlias(() => fuelIncomeOperationAlias.RelatedToSubdivision, () => incomeSubdivisionAlias)
                                     .Where(Restrictions.Where(() => fuelIncomeOperationAlias.FuelType.Id == fuelTypeAlias.Id))
                                     .Where(() => incomeSubdivisionAlias.Id == subdivision.Id)
                                     .Select(Projections.Sum(Projections.Property(() => fuelIncomeOperationAlias.FuelLiters)))
                                     .DetachedCriteria;

            var resultList = uow.Session.QueryOver <FuelType>(() => fuelTypeAlias)
                             .SelectList(list => list
                                         .SelectGroup(() => fuelTypeAlias.Id)
                                         .Select(
                                             Projections.SqlFunction(
                                                 new SQLFunctionTemplate(NHibernateUtil.Decimal, "( IFNULL(?1, 0) - IFNULL(?2, 0) )"),
                                                 NHibernateUtil.Decimal,
                                                 Projections.SubQuery(fuelIncomeSubquery),
                                                 Projections.SubQuery(fuelExpenseSubquery)
                                                 )
                                             )
                                         ).TransformUsing(Transformers.PassThrough)
                             .List <object[]>()
                             .ToDictionary(key => (int)key[0], value => (decimal)(value[1] ?? 0m));
            var fuelTypes = uow.GetAll <FuelType>();
            Dictionary <FuelType, decimal> result = new Dictionary <FuelType, decimal>();

            foreach (var fuelType in fuelTypes)
            {
                result.Add(fuelType, resultList[fuelType.Id]);
            }
            return(result);
        }
Exemplo n.º 14
0
        protected override void Seed(AuthorizationDbContext context)
        {
            base.Seed(context);
            var subdivision = new Subdivision
            {
                Id              = 1,
                Name            = "SA Cimislia",
                Phone           = "068753456",
                LeaderFirstName = "Vasile",
                LeaderLastName  = "Popa",
            };

            context.Subdivisions.Add(subdivision);

            var agent = new Agent
            {
                Id      = 1,
                Name    = "Tudor Trandafir",
                Address = "str.Uzinelor",
                Phone   = "068345678"
            };

            context.Agents.Add(agent);

            var authorization = new Authorization
            {
                Id                        = 1,
                ASVF                      = "12344FRD34F43DWP5",
                EliberationDate           = DateTime.Now.Date,
                ExpireDate                = new DateTime(2013, 3, 4),
                AuthorizatedObjectName    = "SA Bordei",
                AuthorizatedObjectAddress = "Str.Stefan Cel Mare",
                AuthorizatedObjectPhone   = "079543478",
                SubdivisionId             = 1,
                AgentId                   = 1,
            };

            context.Authorizations.Add(authorization);

            //var subdivision1 = new Subdivision
            //{
            //    Id = 2,
            //    Name = "SA Chisinau",
            //    Phone = "068753456",
            //    LeaderFirstName = "Vaseile",
            //    LeaderLastName = "Popa",
            //};

            //context.Subdivisions.Add(subdivision1);

            //var agent1 = new Agent
            //{
            //    Id = 2,
            //    Name = "Vasea Trandafir",
            //    Address = "str.Uzinelor",
            //    Phone = "4235312"
            //};

            //context.Agents.Add(agent1);

            //var authorization1 = new Authorization
            //{
            //    Id = 2,
            //    ASVF = "sadsaas",
            //    EliberationDate = DateTime.Now.Date,
            //    ExpireDate = new DateTime(2013, 3, 4),
            //    AuthorizatedObjectName = "SA Bordei",
            //    AuthorizatedObjectAddress = "Str.Stefan Cel Mare",
            //    AuthorizatedObjectPhone = "435324",
            //    SubdivisionId = 2,
            //    AgentId = 2

            //};

            //context.Authorizations.Add(authorization1);

            var activitiesList = new List <ActivityProfile>
            {
                new ActivityProfile {
                    Activity = Activity.Abataj
                },
                new ActivityProfile {
                    Activity = Activity.Achizitionare
                },
                new ActivityProfile {
                    Activity = Activity.ComercializareAnimalelor
                },
                new ActivityProfile {
                    Activity = Activity.Distribuire
                },
                new ActivityProfile {
                    Activity = Activity.Fabricare
                },
                new ActivityProfile {
                    Activity = Activity.Pastrare
                },
                new ActivityProfile {
                    Activity = Activity.Preluare
                },
                new ActivityProfile {
                    Activity = Activity.ProduseAlimentare
                },
                new ActivityProfile {
                    Activity = Activity.Transport
                }
            };

            foreach (var item in activitiesList)
            {
                context.ActivityProfiles.Add(item);
            }

            context.SaveChanges();
        }
Exemplo n.º 15
0
 public static decimal CurrentCashForSubdivision(IUnitOfWork uow, Subdivision subdivision)
 {
     return(new EntityRepositories.Cash.CashRepository().CurrentCashForSubdivision(uow, subdivision));
 }
Exemplo n.º 16
0
        private IList <ComplaintGuiltyNode> GetGuilties(ComplaintFilterViewModel filter)
        {
            Complaint           complaintAlias              = null;
            Subdivision         subdivisionAlias            = null;
            Subdivision         subdivisionForEmployeeAlias = null;
            Employee            employeeAlias        = null;
            ComplaintGuiltyItem guiltyItemAlias      = null;
            ComplaintResult     complaintResultAlias = null;
            QueryNode           queryNodeAlias       = null;
            ComplaintDiscussion discussionAlias      = null;

            var query = InfoProvider.UoW.Session.QueryOver(() => guiltyItemAlias)
                        .Left.JoinAlias(() => guiltyItemAlias.Complaint, () => complaintAlias)
                        .Left.JoinAlias(() => complaintAlias.ComplaintResult, () => complaintResultAlias)
                        .Left.JoinAlias(() => guiltyItemAlias.Subdivision, () => subdivisionAlias)
                        .Left.JoinAlias(() => guiltyItemAlias.Employee, () => employeeAlias)
                        .Left.JoinAlias(() => employeeAlias.Subdivision, () => subdivisionForEmployeeAlias)
            ;

            filter.EndDate = filter.EndDate.Date.AddHours(23).AddMinutes(59);
            if (filter.StartDate.HasValue)
            {
                filter.StartDate = filter.StartDate.Value.Date;
            }

            QueryOver <ComplaintDiscussion, ComplaintDiscussion> dicussionQuery = null;

            if (filter.Subdivision != null)
            {
                dicussionQuery = QueryOver.Of(() => discussionAlias)
                                 .Select(Projections.Property <ComplaintDiscussion>(p => p.Id))
                                 .Where(() => discussionAlias.Subdivision.Id == filter.Subdivision.Id)
                                 .And(() => discussionAlias.Complaint.Id == complaintAlias.Id);
            }

            if (filter.StartDate.HasValue)
            {
                switch (filter.FilterDateType)
                {
                case DateFilterType.PlannedCompletionDate:
                    if (dicussionQuery == null)
                    {
                        query = query.Where(() => complaintAlias.PlannedCompletionDate <= filter.EndDate)
                                .And(() => filter.StartDate == null || complaintAlias.PlannedCompletionDate >= filter.StartDate.Value);
                    }
                    else
                    {
                        dicussionQuery = dicussionQuery
                                         .And(() => filter.StartDate == null || discussionAlias.PlannedCompletionDate >= filter.StartDate.Value)
                                         .And(() => discussionAlias.PlannedCompletionDate <= filter.EndDate);
                    }
                    break;

                case DateFilterType.ActualCompletionDate:
                    query = query.Where(() => complaintAlias.ActualCompletionDate <= filter.EndDate)
                            .And(() => filter.StartDate == null || complaintAlias.ActualCompletionDate >= filter.StartDate.Value);
                    break;

                case DateFilterType.CreationDate:
                    query = query.Where(() => complaintAlias.CreationDate <= filter.EndDate)
                            .And(() => filter.StartDate == null || complaintAlias.CreationDate >= filter.StartDate.Value);
                    break;

                default:
                    throw new ArgumentOutOfRangeException();
                }
            }

            if (dicussionQuery != null)
            {
                query.WithSubquery.WhereExists(dicussionQuery);
            }
            if (filter.ComplaintType != null)
            {
                query = query.Where(() => complaintAlias.ComplaintType == filter.ComplaintType);
            }
            if (filter.ComplaintStatus != null)
            {
                query = query.Where(() => complaintAlias.Status == filter.ComplaintStatus);
            }
            if (filter.Employee != null)
            {
                query = query.Where(() => complaintAlias.CreatedBy.Id == filter.Employee.Id);
            }

            if (filter.GuiltyItemVM?.Entity?.GuiltyType != null)
            {
                var subquery = QueryOver.Of <ComplaintGuiltyItem>()
                               .Where(g => g.GuiltyType == filter.GuiltyItemVM.Entity.GuiltyType.Value);
                switch (filter.GuiltyItemVM.Entity.GuiltyType)
                {
                case ComplaintGuiltyTypes.None:
                case ComplaintGuiltyTypes.Client:
                case ComplaintGuiltyTypes.Supplier:
                    break;

                case ComplaintGuiltyTypes.Employee:
                    if (filter.GuiltyItemVM.Entity.Employee != null)
                    {
                        subquery.Where(g => g.Employee.Id == filter.GuiltyItemVM.Entity.Employee.Id);
                    }
                    break;

                case ComplaintGuiltyTypes.Subdivision:
                    if (filter.GuiltyItemVM.Entity.Subdivision != null)
                    {
                        subquery.Where(g => g.Subdivision.Id == filter.GuiltyItemVM.Entity.Subdivision.Id);
                    }
                    break;

                default:
                    break;
                }
                query.WithSubquery.WhereProperty(() => complaintAlias.Id).In(subquery.Select(x => x.Complaint));
            }

            if (filter.ComplaintKind != null)
            {
                query.Where(() => complaintAlias.ComplaintKind.Id == filter.ComplaintKind.Id);
            }

            var result = query.SelectList(list => list
                                          .SelectGroup(c => c.Complaint.Id)
                                          .Select(() => complaintAlias.Status).WithAlias(() => queryNodeAlias.Status)
                                          .Select(() => complaintResultAlias.Name).WithAlias(() => queryNodeAlias.ResultText)
                                          .Select(Projections.SqlFunction(
                                                      new SQLFunctionTemplate(
                                                          NHibernateUtil.String,
                                                          "GROUP_CONCAT(" +
                                                          "CASE ?1 " +
                                                          $"WHEN '{nameof(ComplaintGuiltyTypes.Employee)}' THEN IFNULL(CONCAT('Отд: ', ?2), 'Отдел ВВ') " +
                                                          $"WHEN '{nameof(ComplaintGuiltyTypes.Subdivision)}' THEN IFNULL(CONCAT('Отд: ', ?3), 'Отдел ВВ') " +
                                                          $"WHEN '{nameof(ComplaintGuiltyTypes.Client)}' THEN 'Клиент' " +
                                                          $"WHEN '{nameof(ComplaintGuiltyTypes.Supplier)}' THEN 'Поставщик' " +
                                                          $"WHEN '{nameof(ComplaintGuiltyTypes.None)}' THEN 'Нет (не рекламация)' " +
                                                          "ELSE ?1 " +
                                                          "END " +
                                                          "ORDER BY ?1 ASC SEPARATOR '\n')"),
                                                      NHibernateUtil.String,
                                                      Projections.Property(() => guiltyItemAlias.GuiltyType),
                                                      Projections.Property(() => subdivisionForEmployeeAlias.Name),
                                                      Projections.Property(() => subdivisionAlias.Name)))
                                          .WithAlias(() => queryNodeAlias.GuiltyName))
                         .TransformUsing(Transformers.AliasToBean <QueryNode>())
                         .List <QueryNode>();

            var groupedResult = result.GroupBy(p => p.GuiltyName, (guiltyName, guiltiesGroup) => new ComplaintGuiltyNode {
                GuiltyName = guiltyName,
                Count      = guiltiesGroup.Count(),
                Guilties   = guiltiesGroup.ToList()
            }).ToList();

            //Удаление дублирующихся названий отделов
            for (int i = 0; i < groupedResult.Count; i++)
            {
                if (groupedResult[i].GuiltyName.Contains("\n"))
                {
                    groupedResult[i].GuiltyName = string.Join("\n", groupedResult[i].GuiltyName.Split('\n').Distinct());
                }
            }

            foreach (var item in groupedResult)
            {
                item.CreateComplaintResultNodes();
            }
            return(groupedResult);
        }
        public void CreateFuelExpenseOperationTest()
        {
            // arrange
            var categoryRepositoryMock = Substitute.For <ICategoryRepository>();

            expenseCategoryMock = Substitute.For <ExpenseCategory>();
            categoryRepositoryMock.FuelDocumentExpenseCategory(null).Returns(expenseCategoryMock);

            FuelType fuelTypeMock = Substitute.For <FuelType>();

            fuelTypeMock.Cost.Returns(30);

            CarVersion carVersionMock = Substitute.For <CarVersion>();

            carVersionMock.IsCompanyCar.Returns(false);

            Organization organisationMock = Substitute.For <Organization>();

            IUnitOfWork uowMock = Substitute.For <IUnitOfWork>();

            VodovozRouteList routeListMock   = Substitute.For <VodovozRouteList>();
            Subdivision      subdivisionMock = Substitute.For <Subdivision>();

            routeListMock.ClosingSubdivision = subdivisionMock;

            IFuelRepository fuelRepositoryMock = Substitute.For <IFuelRepository>();

            fuelRepositoryMock.GetFuelBalanceForSubdivision(uowMock, subdivisionMock, fuelTypeMock).Returns(50);

            OrganizationParametersProvider organisationParametersProviderMock =
                Substitute.For <OrganizationParametersProvider>(_parametersProvider);

            CashDistributionCommonOrganisationProvider commonOrganisationProviderMock =
                Substitute.For <CashDistributionCommonOrganisationProvider>(organisationParametersProviderMock);

            commonOrganisationProviderMock.GetCommonOrganisation(uowMock).Returns(organisationMock);

            var fuelDocument = new FuelDocument();

            fuelDocument.Driver       = Substitute.For <Employee>();
            fuelDocument.Car          = carVersionMock.Car;
            fuelDocument.Date         = DateTime.Now;
            fuelDocument.LastEditDate = DateTime.Now;
            fuelDocument.Fuel         = fuelTypeMock;
            fuelDocument.RouteList    = routeListMock;
            fuelDocument.UoW          = uowMock;
            fuelDocument.FuelCoupons  = 40;
            fuelDocument.PayedForFuel = null;
            fuelDocument.Subdivision  = subdivisionMock;

            // act
            fuelDocument.CreateOperations(fuelRepositoryMock, commonOrganisationProviderMock, categoryRepositoryMock);

            // assert
            AssertsAccumulator.Create
            .Accumulate(() => Assert.That(fuelDocument.FuelExpenseOperation.FuelDocument, Is.SameAs(fuelDocument), "Документ в операции должен совпадать с документом выдачи топлива"))
            .Accumulate(() => Assert.That(fuelDocument.FuelExpenseOperation.FuelTransferDocument, Is.Null, "Документ перемещения топлива не должен быть заполнен"))
            .Accumulate(() => Assert.That(fuelDocument.FuelExpenseOperation.RelatedToSubdivision, Is.SameAs(fuelDocument.RouteList.ClosingSubdivision), "Подразделение в операции должно совпадать с подразделением в маршрутном листе"))
            .Accumulate(() => Assert.That(fuelDocument.FuelExpenseOperation.FuelLiters, Is.EqualTo(fuelDocument.FuelCoupons), "Списанное топливо должно совпадать с топливом выданным талонами в документе выдачи"))
            .Release();
        }
Exemplo n.º 18
0
 public Task AddSubdivision(Subdivision subdivision)
 {
     throw new NotImplementedException();
 }
        public void CreateFuelOperationTest_Car_IsCompanyHavings()
        {
            // arrange
            var categoryRepositoryMock = Substitute.For <ICategoryRepository>();

            expenseCategoryMock = Substitute.For <ExpenseCategory>();
            categoryRepositoryMock.FuelDocumentExpenseCategory(null).Returns(expenseCategoryMock);

            FuelType fuelTypeMock = Substitute.For <FuelType>();

            fuelTypeMock.Cost.Returns(30);

            CarVersion carVersionMock = Substitute.For <CarVersion>();

            carVersionMock.IsCompanyCar.Returns(true);

            Car carMock = Substitute.For <Car>();

            carMock.GetActiveCarVersionOnDate(Arg.Any <DateTime>()).Returns(carVersionMock);

            Organization organisationMock = Substitute.For <Organization>();

            IUnitOfWork uowMock = Substitute.For <IUnitOfWork>();

            VodovozRouteList routeListMock   = Substitute.For <VodovozRouteList>();
            Subdivision      subdivisionMock = Substitute.For <Subdivision>();

            routeListMock.ClosingSubdivision = subdivisionMock;

            IFuelRepository fuelRepositoryMock = Substitute.For <IFuelRepository>();

            fuelRepositoryMock.GetFuelBalanceForSubdivision(uowMock, subdivisionMock, fuelTypeMock).Returns(50);

            OrganizationParametersProvider organisationParametersProviderMock =
                Substitute.For <OrganizationParametersProvider>(_parametersProvider);

            CashDistributionCommonOrganisationProvider commonOrganisationProviderMock =
                Substitute.For <CashDistributionCommonOrganisationProvider>(organisationParametersProviderMock);

            commonOrganisationProviderMock.GetCommonOrganisation(uowMock).Returns(organisationMock);

            var fuelDocument = new FuelDocument
            {
                Driver       = Substitute.For <Employee>(),
                Car          = carMock,
                Date         = DateTime.Now,
                LastEditDate = DateTime.Now,
                Fuel         = fuelTypeMock,
                RouteList    = routeListMock,
                UoW          = uowMock,
                FuelCoupons  = 40,
                PayedForFuel = null,
                Subdivision  = subdivisionMock
            };

            // act
            fuelDocument.CreateOperations(fuelRepositoryMock, commonOrganisationProviderMock, categoryRepositoryMock);

            // assert
            AssertsAccumulator.Create
            .Accumulate(() => Assert.That(fuelDocument.FuelOperation.LitersGived, Is.EqualTo(fuelDocument.FuelCoupons), "Количество топлива в операции не совпадает с количеством в документе"))
            .Accumulate(() => Assert.That(fuelDocument.FuelOperation.PayedLiters, Is.EqualTo(fuelDocument.PayedLiters), "Количество топлива оплаченного деньгами не совпадает с количеством топлива оплаченного деньгами в документе"))
            .Accumulate(() => Assert.That(fuelDocument.FuelOperation.Car, Is.SameAs(fuelDocument.Car), "Автомобиль в операции не совпадает с автомобилем в документе"))
            .Accumulate(() => Assert.That(fuelDocument.FuelOperation.Driver, Is.Null, "Водитель не должен быть заполнен"))
            .Accumulate(() => Assert.That(fuelDocument.FuelOperation.Fuel, Is.SameAs(fuelDocument.Fuel), "Тип топлива в операции не совпадает с типом топлива в документе"))
            .Release();
        }
Exemplo n.º 20
0
        public bool Validate(Type entityType, int userId, IPermissionExtension permissionExtension)
        {
            if (!permissionExtension.IsValidType(entityType))
            {
                return(false);
            }

            using (var uow = UnitOfWorkFactory.CreateWithoutRoot())
            {
                User user = uow.GetById <User>(userId);

                Employee employee = EmployeeRepository.GetEmployeesForUser(uow, userId).FirstOrDefault();

                TypeOfEntity typeOfEntity = uow.Session.QueryOver <TypeOfEntity>()
                                            .Where(x => x.Type == entityType.Name)
                                            .Take(1).List().FirstOrDefault();

                if (user == null)
                {
                    return(false);
                }
                if (user.IsAdmin)
                {
                    return(true);
                }
                if (typeOfEntity == null)
                {
                    return(false);
                }
                if (employee == null || employee.Subdivision == null)
                {
                    return(false);
                }

                var userPermission = uow.Session.QueryOver <EntityUserPermissionExtended>()
                                     .Where(x => x.User.Id == user.Id)
                                     .And(x => x.PermissionId == permissionExtension.PermissionId)
                                     .And(x => x.TypeOfEntity.Id == typeOfEntity.Id)
                                     .Take(1).List().FirstOrDefault();

                if (userPermission != null)
                {
                    if (userPermission.IsPermissionAvailable == null)
                    {
                        throw new NullReferenceException(nameof(userPermission));
                    }
                    else
                    {
                        return(userPermission.IsPermissionAvailable.Value);
                    }
                }

                Subdivision subdivision = null;
                do
                {
                    if (subdivision == null)
                    {
                        subdivision = employee.Subdivision;
                    }
                    else
                    {
                        subdivision = subdivision.ParentSubdivision;
                    }

                    var subdivisionPermission = uow.Session.QueryOver <EntitySubdivisionPermissionExtended>()
                                                .Where(x => x.Subdivision.Id == subdivision.Id)
                                                .And(x => x.PermissionId == permissionExtension.PermissionId)
                                                .And(x => x.TypeOfEntity.Id == typeOfEntity.Id)
                                                .Take(1).List().FirstOrDefault();

                    if (subdivisionPermission == null)
                    {
                        continue;
                    }

                    if (subdivisionPermission.IsPermissionAvailable == null)
                    {
                        throw new NullReferenceException(nameof(subdivisionPermission));
                    }

                    return(subdivisionPermission.IsPermissionAvailable.Value);
                }while(subdivision.ParentSubdivision != null);
            }
            return(false);
        }
Exemplo n.º 21
0
        private void Add2DB(List <string> data)
        {
            //if (data.Count > 0)
            for (_i = 0; _i < data.Count; _i++)
            {
                _currentLine = data[_i];
                string[] item = _currentLine.Split(',');
                //string[] item = data[0].Split(',');
                if (IsEmpty(item, 7))
                {
                    continue;
                }

                CheckAllValue(item, 7);

                using (var context = new StreetContext())
                {
                    //街道

                    StreetUnit street = context.Streets.SingleOrDefault(s => s.Name == "徐家棚");

                    if (street == null)
                    {
                        street = new StreetUnit {
                            Name = "徐家棚"
                        };
                        context.Streets.Add(street);
                    }

                    //社区
                    var community = context.Communitys.SingleOrDefault(s => s.Name == item[0].Replace("社区", ""));
                    if (community == null)
                    {
                        //CheckValue(item,0);
                        community = new Community {
                            Name = item[0].Replace("社区", "")
                        };
                        community.Street = street;
                        //street.Communities.Add(community);
                        context.Communitys.Add(community);
                    }

                    //网格
                    var netGrid = context.NetGrids.SingleOrDefault(s => s.Community.Id == community.Id && s.Name == item[1].Replace("网格", ""));
                    if (netGrid == null)
                    {
                        // CheckValue(item, 1);
                        netGrid = new NetGrid {
                            Name = item[1].Replace("网格", "")
                        };
                        netGrid.Community = community;
                        context.NetGrids.Add(netGrid);
                    }


                    //小区
                    var subdivision = context.Subdivisions.SingleOrDefault(s => s.Name == item[3].Replace("小区", ""));
                    if (subdivision == null)
                    {
                        //CheckValue(item,3);
                        subdivision = new Subdivision {
                            Name = item[3].Replace("小区", "")
                        };
                        subdivision.Street = street;
                        context.Subdivisions.Add(subdivision);
                    }

                    //楼栋

                    //var building = netGrid.Buildings.SingleOrDefault(s => s.Name == item[4]);
                    var building = context.Buildings.SingleOrDefault(s => s.Subdivision.Id == subdivision.Id && s.Name == item[4].Replace("栋", ""));
                    if (building == null)
                    {
                        building = new Building
                        {
                            Name = item[4].Replace("栋", ""),
                            //房屋地址
                            Address = item[2],
                        };
                        building.NetGrid     = netGrid;
                        building.Subdivision = subdivision;
                        context.Buildings.Add(building);
                        //subdivision.Buildings.Add(building);
                    }

                    //房屋
                    string roomName = $"{item[5].Replace("单元", "")}-{item[6].Replace("号", "")}";
                    var    room     = context.Rooms.SingleOrDefault(r => r.Building.Id == building.Id && r.Name == roomName);
                    if (room == null)
                    {
                        room = new Room
                        {
                            Name     = roomName,
                            Category = item[7],
                            Use      = item[8],
                            Area     = item[10],
                            Other    = item[9],
                        };
                        room.Building = building;
                        context.Rooms.Add(room);
                    }

                    //单位信息
                    //  var companyinfo = new CompanyInfo { };
                    if (item[11] != "")
                    {
                        var companyinfo = new CompanyInfo
                        {
                            Name          = item[11],
                            Character     = item[12],
                            SocialId      = item[13],
                            ContactPerson = item[14],
                            PersonId      = item[15],
                            Phone         = item[16],
                            Area          = item[17]
                        };
                        companyinfo.Room = room;
                        context.CompanyInfos.Add(companyinfo);
                    }



                    //人
                    var person = context.Persons.SingleOrDefault(p => p.PersonId == item[20]);

                    //检测空名空身份证号
                    if (!CheckItem(item))
                    {
                        continue;
                    }
                    //检测同身份证号不同名
                    if (!CheckPerson(person, item))
                    {
                        continue;
                    }

                    if (person == null)
                    {
                        person = new Person
                        {
                            Name         = item[18],
                            EthnicGroups = item[19].Replace("族", ""),
                            PersonId     = item[20],
                            Phone        = item[21],
                            //户籍地址
                            DomicileAddress = item[22],

                            Company                = item[27],
                            PoliticalState         = item[28],
                            OrganizationalRelation = item[29],
                            IsOverseasChinese      = (item[30] == "是"),
                            MerriedStatus          = item[31],
                        };
                        // person.CompanyInfo = companyinfo;
                        context.Persons.Add(person);


                        //单位信息
                        //if (item[11] != "")
                        //{
                        //    var companyinfo = new CompanyInfo
                        //    {
                        //        Name = item[11],
                        //        Character = item[12],
                        //        SocialId = item[13],
                        //        ContactPerson = item[14],
                        //        PersonId = item[15],
                        //        Phone = item[16],
                        //        Area = item[17]
                        //    };
                        //    context.CompanyInfos.Add(companyinfo);
                        //}
                        //特殊人群

                        if (item[34] != "")
                        {
                            //var specialGroup = context.SpecialGroups.SingleOrDefault(s => s.PersonId == item[20]);
                            //if (specialGroup == null)
                            var specialGroup = new SpecialGroup {
                                PersonId = item[20], Type = item[34]
                            };
                            context.SpecialGroups.Add(specialGroup);
                        }

                        // 困难人群
                        if (item[35] != "")
                        {
                            var poorPeople = new PoorPeople
                            {
                                PersonId    = item[20],
                                Type        = item[35],
                                Child       = item[36],
                                Youngsters  = item[37],
                                SpecialHelp = item[38]
                            };
                            context.PoorPeoples.Add(poorPeople);
                        }
                        //服役状况
                        if (item[39] != "")
                        {
                            var militaryService = new MilitaryService {
                                PersonId = item[20], Type = item[39]
                            };
                            context.MilitaryService.Add(militaryService);
                        }

                        //残疾
                        //var disability = context.Disabilitys.SingleOrDefault(s => s.PersonId == item[20]);
                        //if (disability == null)
                        if (item[40] != "")
                        {
                            var disability = new Disability
                            {
                                PersonId = item[20],
                                Type     = item[40],
                                Class    = item[41],
                            };
                            context.Disability.Add(disability);
                        }

                        //其他信息
                        //var otherInfos = context.OtherInfos.SingleOrDefault(s => s.PersonId == item[20]);
                        // if (otherInfos == null)
                        if (item[42] != "")
                        {
                            var otherInfos = new OtherInfos
                            {
                                PersonId = item[20],
                                //Key = item[42],
                                Value = item[42],
                            };
                            context.OtherInfos.Add(otherInfos);
                        }
                    }
                    //personroom 人房信息
                    var personHouse = new PersonRoom
                    {
                        PersonId                = item[20],
                        IsHouseholder           = (item[23] == "是"),
                        RelationWithHouseholder = item[24],
                        IsOwner             = (item[25] == "是"),
                        IsLiveHere          = (item[26] == "是"),
                        PopulationCharacter = item[32],
                        LodgingReason       = item[33]
                    };

                    personHouse.Person = person;
                    personHouse.Room   = room;
                    context.PersonRooms.Add(personHouse);



                    context.SaveChanges();
                    _preItem = item;
                }
            }
            // tbInfo_err.Text = "";
            tbInfo.Text      = "Add personroomdata OK!";
            tbInfo_err.Text += _errorMessage;
        }
Exemplo n.º 22
0
        public async Task <Subdivision> GetSubdivisionAsync(long id)
        {
            Subdivision subdivision = await _context.Subdivisions.Include(e => e.Manager).FirstOrDefaultAsync(s => s.Id == id);

            return(subdivision);
        }
Exemplo n.º 23
0
        private void EditButtonClick(object sender, RoutedEventArgs e)
        {
            Subdivision subdivision = (sender as Button).DataContext as Subdivision;

            new EditSubdivision(subdivision).Show();
        }
Exemplo n.º 24
0
    static IEnumerable <string> NotesheetToStrings(Song song, IEnumerable <NoteGroup> groups, Difficulty difficulty)
    {
        // Encabezado
        yield return(null);

        yield return(charComment + " Notesheet text importer/exporter v" + version);

        yield return(charComment + " Song: " + (song ? song.Title : "missingsong."));

        yield return(charComment + " Dificultad: " + difficulty);

        yield return(charComment + " Advertencia: Asegurarse de que el editor tenga " +
                     "\"Ajuste de línea\" desactivado para visualizar el texto correctamente.");

        yield return(null);

        yield return(charComment + string.Format(" {0} = Tiempo relativo en beats", charTime));

        yield return(charComment + string.Format(" {0} = Duración del grupo en beats (0 por defecto)", charDuration));

        yield return(charComment + string.Format(" {0}{1}{0} = Notas en ese grupo ({1} = nota, {0} = sin nota)", charNoteFalse, charNoteTrue));

        yield return(null);

        // Informar de las subdivisiones válidas:
        yield return(charComment + string.Format(" Los tiempos en beats se pueden fraccionar. Ej: 1{0}2", charFraction));

        string subdivisions = string.Join(" - ", Subdivision.GetDivisors().Select(d => d.ToString()).ToArray());

        yield return(charComment + " Divisores válidos: " + subdivisions);

        yield return(null);

        int inputLength = (int)difficulty;

        // Escribimos las líneas necesarias para
        foreach (var group in groups)
        {
            // Dejamos un espacio al principio de cada grupo
            yield return(null);


            // Tiempo
            // Devolvemos la línea de texto con el tiempo
            yield return(charTime + GetBeatTimeFraction(group.GetRelativeTime));


            // Duración:
            int duration = group.GetDuration;
            if (duration > 0)
            {
                yield return(charDuration + GetBeatTimeFraction(duration));
            }


            // Notas:

            // Devolvemos un línea con el array de notas de este grupo
            // Por ejemplo: 101 = Notas 0 y 2
            string notesText = string.Empty;
            for (int i = 0; i < inputLength; i++)
            {
                notesText += ((group.NoteBits & 1 << i) != 0) ? charNoteTrue : charNoteFalse;
            }
            yield return(notesText);
        }
    }
        public ExpenseObjectViewModel(IEntityUoWBuilder uowBuilder,
                                      IUnitOfWorkFactory unitOfWorkFactory,
                                      INavigationManager navigation,
                                      ILifetimeScope autofacScope,
                                      IValidator validator,
                                      IUserService userService,
                                      IInteractiveQuestion interactive,
                                      StockRepository stockRepository,
                                      FeaturesService featutesService,
                                      BaseParameters baseParameters,
                                      Subdivision subdivision = null
                                      )
            : base(uowBuilder, unitOfWorkFactory, navigation, validator)
        {
            Entity.Date          = DateTime.Today;
            this.interactive     = interactive;
            this.stockRepository = stockRepository ?? throw new ArgumentNullException(nameof(stockRepository));
            this.baseParameters  = baseParameters ?? throw new ArgumentNullException(nameof(baseParameters));
            if (subdivision != null)
            {
                Entity.Subdivision = subdivision;
                Entity.Warehouse   = subdivision.Warehouse;
            }

            if (UoW.IsNew)
            {
                Entity.Operation     = ExpenseOperations.Object;
                Entity.CreatedbyUser = userService.GetCurrentUser(UoW);
            }
            if (Entity.Operation != ExpenseOperations.Object)
            {
                throw new InvalidOperationException("Диалог предназначен только для операций выдачи на подразделение.");
            }

            if (Entity.Warehouse == null)
            {
                Entity.Warehouse = stockRepository.GetDefaultWarehouse(UoW, featutesService, autofacScope.Resolve <IUserService>().CurrentUserId);
            }

            this.autofacScope = autofacScope ?? throw new ArgumentNullException(nameof(autofacScope));
            var entryBuilder = new CommonEEVMBuilderFactory <Expense>(this, Entity, UoW, navigation, autofacScope);

            WarehouseExpenceViewModel = entryBuilder.ForProperty(x => x.Warehouse)
                                        .UseViewModelJournalAndAutocompleter <WarehouseJournalViewModel>()
                                        .UseViewModelDialog <WarehouseViewModel>()
                                        .Finish();

            SubdivisionViewModel = entryBuilder.ForProperty(x => x.Subdivision)
                                   .UseViewModelJournalAndAutocompleter <SubdivisionJournalViewModel>()
                                   .UseViewModelDialog <SubdivisionViewModel>()
                                   .Finish();

            var parameter = new TypedParameter(typeof(ExpenseObjectViewModel), this);

            DocItemsObjectViewModel = this.autofacScope.Resolve <ExpenseDocItemsObjectViewModel>(parameter);

            //Переопределяем параметры валидации
            Validations.Clear();
            Validations.Add(new ValidationRequest(Entity, new ValidationContext(Entity, new Dictionary <object, object> {
                { nameof(BaseParameters), baseParameters }
            })));
        }
Exemplo n.º 26
0
 abstract public Unidad GetSubdivision(Subdivision subdivision);
Exemplo n.º 27
0
 public static IList <Subdivision> GetChildDepartments(IUnitOfWork uow, Subdivision parentSubdivision, bool orderByDescending = false)
 {
     return(new EntityRepositories.Subdivisions.SubdivisionRepository().GetChildDepartments(uow, parentSubdivision, orderByDescending));
 }
Exemplo n.º 28
0
 public IList <HierarchicalPresetSubdivisionPermission> GetAllPresetSubdivisionPermission(IUnitOfWork uow, Subdivision subdivision)
 {
     return(uow.Session.QueryOver <HierarchicalPresetSubdivisionPermission>()
            .Where(x => x.Subdivision.Id == subdivision.Id)
            .List());
 }
Exemplo n.º 29
0
 public static IList <Warehouse> GetWarehouses(IUnitOfWork uow, Subdivision subdivision, bool orderByDescending = false)
 {
     return(new EntityRepositories.Subdivisions.SubdivisionRepository().GetWarehouses(uow, subdivision, orderByDescending));
 }
Exemplo n.º 30
0
    // Create random lines through area and subdivide based on these lines
    public void setRandomSubdivisions()
    {
        Vector2 topleft     = new Vector2(minx, maxy);
        Vector2 topright    = new Vector2(maxx, maxy);
        Vector2 bottomleft  = new Vector2(minx, miny);
        Vector2 bottomright = new Vector2(maxx, miny);

        // Area is divide by 2 to 3 on each side
        int xdivisions = Random.Range(2, 4);
        int ydivisions = Random.Range(2, 4);

        Vector2[,] intersections          = new Vector2[xdivisions + 2, ydivisions + 2];
        intersections [0, 0]              = topleft;
        intersections [xdivisions + 1, 0] = topright;
        intersections [0, ydivisions + 1] = bottomleft;
        intersections [xdivisions + 1, ydivisions + 1] = bottomright;

        // top and bottom random points
        for (int i = 1; i <= xdivisions; i++)
        {
            float minxpointtop = minx + ((float)(i - 1) / xdivisions) * width;
            float maxxpointtop = minx + ((float)i / xdivisions) * width;


            float randxtop = Random.Range(minxpointtop + streetwidth, maxxpointtop - streetwidth);
            float randxbot = Random.Range(minxpointtop + streetwidth, maxxpointtop - streetwidth);

            intersections [i, 0] = new Vector2(randxtop, maxy);
            intersections [i, ydivisions + 1] = new Vector2(randxbot, miny);
        }

        // left and right random points
        for (int i = 1; i <= ydivisions; i++)
        {
            float minypointleft = maxy - ((float)(i - 1) / ydivisions) * height;
            float maxypointleft = maxy - ((float)i / ydivisions) * height;


            float randxleft  = Random.Range(minypointleft + streetwidth, maxypointleft - streetwidth);
            float randxright = Random.Range(minypointleft + streetwidth, maxypointleft - streetwidth);

            intersections [0, i] = new Vector2(minx, randxleft);
            intersections [xdivisions + 1, i] = new Vector2(maxx, randxright);
        }

        // get intersection points between lines
        for (int i = 1; i <= xdivisions; i++)
        {
            for (int j = 1; j <= ydivisions; j++)
            {
                Vector2 vertlinepoint1 = intersections [i, 0];
                Vector2 vertlinepoint2 = intersections [i, ydivisions + 1];
                Vector2 vertdirection  = (vertlinepoint2 - vertlinepoint1);

                Vector2 horlinepoint1 = intersections [0, j];
                Vector2 horlinepoint2 = intersections [xdivisions + 1, j];
                Vector2 hordirection  = (horlinepoint2 - horlinepoint1);

                Vector3 vertorigin = new Vector3(vertlinepoint1.x, vertlinepoint1.y, 0);
                Vector3 hororigin  = new Vector3(horlinepoint1.x, horlinepoint1.y, 0);
                Vector3 vertline   = new Vector3(vertdirection.x, vertdirection.y, 0);
                Vector3 horline    = new Vector3(hordirection.x, hordirection.y, 0);

                Vector3 resultpoint = new Vector3();

                Math3d.LineLineIntersection(out resultpoint, vertorigin, vertline, hororigin, horline);

                Vector2 result2d = new Vector2(resultpoint.x, resultpoint.y);

                intersections [i, j] = result2d;
            }
        }

        // Create subdivisions from each of the subareas formed
        for (int j = 0; j <= ydivisions; j++)
        {
            for (int i = 0; i <= xdivisions; i++)
            {
                Vector2 tl = intersections [i, j];
                Vector2 tr = intersections [i + 1, j];
                Vector2 bl = intersections [i, j + 1];
                Vector2 br = intersections [i + 1, j + 1];

                Subdivision sub = new Subdivision(tl, tr, bl, br, streetwidth);
                sub.stats = statistics;

                subdivisions.Add(sub);
            }
        }
    }
Exemplo n.º 31
0
        private IQueryOver <Complaint> GetComplaintQuery(IUnitOfWork uow)
        {
            ComplaintJournalNode resultAlias = null;

            Complaint           complaintAlias           = null;
            Employee            authorAlias              = null;
            Counterparty        counterpartyAlias        = null;
            DeliveryPoint       deliveryPointAlias       = null;
            ComplaintGuiltyItem complaintGuiltyItemAlias = null;
            Employee            guiltyEmployeeAlias      = null;
            Subdivision         guiltySubdivisionAlias   = null;
            Fine  fineAlias  = null;
            Order orderAlias = null;
            ComplaintDiscussion discussionAlias    = null;
            Subdivision         subdivisionAlias   = null;
            ComplaintKind       complaintKindAlias = null;
            Subdivision         superspecialAlias  = null;

            var authorProjection = Projections.SqlFunction(
                new SQLFunctionTemplate(NHibernateUtil.String, "GET_PERSON_NAME_WITH_INITIALS(?1, ?2, ?3)"),
                NHibernateUtil.String,
                Projections.Property(() => authorAlias.LastName),
                Projections.Property(() => authorAlias.Name),
                Projections.Property(() => authorAlias.Patronymic)
                );

            var workInSubdivisionsSubQuery = QueryOver.Of <Subdivision>(() => subdivisionAlias)
                                             .Where(() => subdivisionAlias.Id == discussionAlias.Subdivision.Id)
                                             .Where(() => discussionAlias.Status == ComplaintStatuses.InProcess)
                                             .Select(Projections.Conditional(
                                                         Restrictions.IsNotNull(Projections.Property(() => subdivisionAlias.ShortName)),
                                                         Projections.Property(() => subdivisionAlias.ShortName),
                                                         Projections.Constant("?")
                                                         )
                                                     );

            var subdivisionsSubqueryProjection = Projections.SqlFunction(
                new SQLFunctionTemplate(NHibernateUtil.String, "GROUP_CONCAT(DISTINCT ?1 SEPARATOR ?2)"),
                NHibernateUtil.String,
                Projections.SubQuery(workInSubdivisionsSubQuery),
                Projections.Constant(", "));

            string okkSubdivision = uow.GetById <Subdivision>(subdivisionService.GetOkkId()).ShortName ?? "?";

            var workInSubdivisionsProjection = Projections.SqlFunction(
                new SQLFunctionTemplate(NHibernateUtil.String, "CONCAT_WS(',', ?1, IF(?2 = 'Checking',?3, ''))"),
                NHibernateUtil.String,
                subdivisionsSubqueryProjection,
                Projections.Property(() => complaintAlias.Status),
                Projections.Constant(okkSubdivision)
                );

            var plannedCompletionDateProjection = Projections.SqlFunction(
                new SQLFunctionTemplate(NHibernateUtil.String, "GROUP_CONCAT(DISTINCT DATE_FORMAT(?1, \"%d.%m.%Y\") SEPARATOR ?2)"),
                NHibernateUtil.String,
                Projections.Property(() => discussionAlias.PlannedCompletionDate),
                Projections.Constant("\n"));

            var lastPlannedCompletionDateProjection = Projections.SqlFunction(
                new SQLFunctionTemplate(NHibernateUtil.DateTime, "MAX(DISTINCT ?1)"),
                NHibernateUtil.DateTime,
                Projections.Property(() => discussionAlias.PlannedCompletionDate));

            var counterpartyWithAddressProjection = Projections.SqlFunction(
                new SQLFunctionTemplate(NHibernateUtil.String, "CONCAT_WS('\n', ?1, COMPILE_ADDRESS(?2))"),
                NHibernateUtil.String,
                Projections.Property(() => counterpartyAlias.Name),
                Projections.Property(() => deliveryPointAlias.Id));

            var guiltyEmployeeProjection = Projections.SqlFunction(
                new SQLFunctionTemplate(NHibernateUtil.String, "GET_PERSON_NAME_WITH_INITIALS(?1, ?2, ?3)"),
                NHibernateUtil.String,
                Projections.Property(() => guiltyEmployeeAlias.LastName),
                Projections.Property(() => guiltyEmployeeAlias.Name),
                Projections.Property(() => guiltyEmployeeAlias.Patronymic)
                );

            var guiltiesProjection = Projections.SqlFunction(
                new SQLFunctionTemplate(NHibernateUtil.String, "GROUP_CONCAT(DISTINCT " +
                                        "CASE ?1 " +
                                        $"WHEN '{nameof(ComplaintGuiltyTypes.Client)}' THEN 'Клиент' " +
                                        $"WHEN '{nameof(ComplaintGuiltyTypes.None)}' THEN 'Нет' " +
                                        $"WHEN '{nameof(ComplaintGuiltyTypes.Employee)}' THEN CONCAT('(',?5,')', ?2)" +
                                        $"WHEN '{nameof(ComplaintGuiltyTypes.Subdivision)}' THEN ?3 " +
                                        "ELSE '' " +
                                        "END" +
                                        " SEPARATOR ?4)"),
                NHibernateUtil.String,
                Projections.Property(() => complaintGuiltyItemAlias.GuiltyType),
                guiltyEmployeeProjection,
                Projections.Property(() => guiltySubdivisionAlias.ShortName),
                Projections.Constant("\n"),
                Projections.Property(() => superspecialAlias.ShortName));

            var finesProjection = Projections.SqlFunction(
                new SQLFunctionTemplate(NHibernateUtil.String, "GROUP_CONCAT(DISTINCT CONCAT(ROUND(?1, 2), ' р.')  SEPARATOR ?2)"),
                NHibernateUtil.String,
                Projections.Property(() => fineAlias.TotalMoney),
                Projections.Constant("\n"));

            var query = uow.Session.QueryOver(() => complaintAlias)
                        .Left.JoinAlias(() => complaintAlias.CreatedBy, () => authorAlias)
                        .Left.JoinAlias(() => complaintAlias.Counterparty, () => counterpartyAlias)
                        .Left.JoinAlias(() => complaintAlias.Order, () => orderAlias)
                        .Left.JoinAlias(() => orderAlias.DeliveryPoint, () => deliveryPointAlias)
                        .Left.JoinAlias(() => complaintAlias.Guilties, () => complaintGuiltyItemAlias)
                        .Left.JoinAlias(() => complaintAlias.ComplaintKind, () => complaintKindAlias)
                        .Left.JoinAlias(() => complaintAlias.Fines, () => fineAlias)
                        .Left.JoinAlias(() => complaintAlias.ComplaintDiscussions, () => discussionAlias)
                        .Left.JoinAlias(() => discussionAlias.Subdivision, () => subdivisionAlias)
                        .Left.JoinAlias(() => complaintGuiltyItemAlias.Employee, () => guiltyEmployeeAlias)
                        .Left.JoinAlias(() => guiltyEmployeeAlias.Subdivision, () => superspecialAlias)
                        .Left.JoinAlias(() => complaintGuiltyItemAlias.Subdivision, () => guiltySubdivisionAlias);

            #region Filter

            if (FilterViewModel != null)
            {
                if (FilterViewModel.IsForRetail != null)
                {
                    query.Where(() => counterpartyAlias.IsForRetail == FilterViewModel.IsForRetail);
                }

                FilterViewModel.EndDate = FilterViewModel.EndDate.Date.AddHours(23).AddMinutes(59);
                if (FilterViewModel.StartDate.HasValue)
                {
                    FilterViewModel.StartDate = FilterViewModel.StartDate.Value.Date;
                }

                QueryOver <ComplaintDiscussion, ComplaintDiscussion> dicussionQuery = null;

                if (FilterViewModel.Subdivision != null)
                {
                    dicussionQuery = QueryOver.Of(() => discussionAlias)
                                     .Select(Projections.Property <ComplaintDiscussion>(p => p.Id))
                                     .Where(() => discussionAlias.Subdivision.Id == FilterViewModel.Subdivision.Id)
                                     .And(() => discussionAlias.Complaint.Id == complaintAlias.Id);
                }

                if (FilterViewModel.StartDate.HasValue)
                {
                    switch (FilterViewModel.FilterDateType)
                    {
                    case DateFilterType.PlannedCompletionDate:
                        if (dicussionQuery == null)
                        {
                            query = query.Where(() => complaintAlias.PlannedCompletionDate <= FilterViewModel.EndDate)
                                    .And(() => FilterViewModel.StartDate == null || complaintAlias.PlannedCompletionDate >= FilterViewModel.StartDate.Value);
                        }
                        else
                        {
                            dicussionQuery = dicussionQuery
                                             .And(() => FilterViewModel.StartDate == null || discussionAlias.PlannedCompletionDate >= FilterViewModel.StartDate.Value)
                                             .And(() => discussionAlias.PlannedCompletionDate <= FilterViewModel.EndDate);
                        }
                        break;

                    case DateFilterType.ActualCompletionDate:
                        query = query.Where(() => complaintAlias.ActualCompletionDate <= FilterViewModel.EndDate)
                                .And(() => FilterViewModel.StartDate == null || complaintAlias.ActualCompletionDate >= FilterViewModel.StartDate.Value);
                        break;

                    case DateFilterType.CreationDate:
                        query = query.Where(() => complaintAlias.CreationDate <= FilterViewModel.EndDate)
                                .And(() => FilterViewModel.StartDate == null || complaintAlias.CreationDate >= FilterViewModel.StartDate.Value);
                        break;

                    default:
                        throw new ArgumentOutOfRangeException();
                    }
                }

                if (dicussionQuery != null)
                {
                    query.WithSubquery.WhereExists(dicussionQuery);
                }
                if (FilterViewModel.ComplaintType != null)
                {
                    query = query.Where(() => complaintAlias.ComplaintType == FilterViewModel.ComplaintType);
                }
                if (FilterViewModel.ComplaintStatus != null)
                {
                    query = query.Where(() => complaintAlias.Status == FilterViewModel.ComplaintStatus);
                }
                if (FilterViewModel.Employee != null)
                {
                    query = query.Where(() => complaintAlias.CreatedBy.Id == FilterViewModel.Employee.Id);
                }

                if (FilterViewModel.CurrentUserSubdivision != null &&
                    FilterViewModel.ComplaintDiscussionStatus != null)
                {
                    query = query.Where(() => discussionAlias.Subdivision.Id == FilterViewModel.CurrentUserSubdivision.Id)
                            .And(() => discussionAlias.Status == FilterViewModel.ComplaintDiscussionStatus);
                }

                if (FilterViewModel.GuiltyItemVM?.Entity?.GuiltyType != null)
                {
                    var subquery = QueryOver.Of <ComplaintGuiltyItem>()
                                   .Where(g => g.GuiltyType == FilterViewModel.GuiltyItemVM.Entity.GuiltyType.Value);
                    switch (FilterViewModel.GuiltyItemVM.Entity.GuiltyType)
                    {
                    case ComplaintGuiltyTypes.None:
                    case ComplaintGuiltyTypes.Client:
                        break;

                    case ComplaintGuiltyTypes.Employee:
                        if (FilterViewModel.GuiltyItemVM.Entity.Employee != null)
                        {
                            subquery.Where(g => g.Employee.Id == FilterViewModel.GuiltyItemVM.Entity.Employee.Id);
                        }
                        break;

                    case ComplaintGuiltyTypes.Subdivision:
                        if (FilterViewModel.GuiltyItemVM.Entity.Subdivision != null)
                        {
                            subquery.Where(g => g.Subdivision.Id == FilterViewModel.GuiltyItemVM.Entity.Subdivision.Id);
                        }
                        break;

                    default:
                        break;
                    }
                    query.WithSubquery.WhereProperty(x => x.Id).In(subquery.Select(x => x.Complaint));
                }

                if (FilterViewModel.ComplaintKind != null)
                {
                    query.Where(() => complaintAlias.ComplaintKind.Id == FilterViewModel.ComplaintKind.Id);
                }
            }

            #endregion Filter

            query.Where(
                GetSearchCriterion(
                    () => complaintAlias.Id,
                    () => complaintAlias.ComplaintText,
                    () => complaintAlias.ResultText,
                    () => counterpartyAlias.Name,
                    () => deliveryPointAlias.CompiledAddress
                    )
                );

            query.SelectList(list => list
                             .SelectGroup(() => complaintAlias.Id).WithAlias(() => resultAlias.Id)
                             .Select(() => complaintAlias.CreationDate).WithAlias(() => resultAlias.Date)
                             .Select(() => complaintAlias.ComplaintType).WithAlias(() => resultAlias.Type)
                             .Select(() => complaintAlias.Status).WithAlias(() => resultAlias.Status)
                             .Select(workInSubdivisionsProjection).WithAlias(() => resultAlias.WorkInSubdivision)
                             .Select(plannedCompletionDateProjection).WithAlias(() => resultAlias.PlannedCompletionDate)
                             .Select(lastPlannedCompletionDateProjection).WithAlias(() => resultAlias.LastPlannedCompletionDate)
                             .Select(counterpartyWithAddressProjection).WithAlias(() => resultAlias.ClientNameWithAddress)
                             .Select(guiltiesProjection).WithAlias(() => resultAlias.Guilties)
                             .Select(authorProjection).WithAlias(() => resultAlias.Author)
                             .Select(finesProjection).WithAlias(() => resultAlias.Fines)
                             .Select(() => complaintAlias.ComplaintText).WithAlias(() => resultAlias.ComplaintText)
                             .Select(() => complaintKindAlias.Name).WithAlias(() => resultAlias.ComplaintKindString)
                             .Select(() => complaintKindAlias.IsArchive).WithAlias(() => resultAlias.ComplaintKindIsArchive)
                             .Select(() => complaintAlias.ResultText).WithAlias(() => resultAlias.ResultText)
                             .Select(() => complaintAlias.ActualCompletionDate).WithAlias(() => resultAlias.ActualCompletionDate)
                             );

            var result = query.TransformUsing(Transformers.AliasToBean <ComplaintJournalNode>())
                         .OrderBy(n => n.Id)
                         .Desc().List <ComplaintJournalNode>()
            ;

            return(query);
        }
Exemplo n.º 32
0
 public static IList <EmployeeCard> GetActiveEmployeesFromSubdivision(IUnitOfWork uow, Subdivision subdivision)
 {
     return(ActiveEmployeesQuery().GetExecutableQueryOver(uow.Session)
            .Where(x => x.Subdivision == subdivision)
            .List());
 }
        protected override void SolveInstance(IGH_DataAccess DA)
        {
            List<Line> lineList = new List<Line>();
            List<Line> lineListInput = new List<Line>();
            List<LineD> lineDList = new List<LineD>();
            LineD[] currLinesArr;
            Subdivision InverseGraph;

            Dictionary<PointD, LineD> InverseEdgesMapping = new Dictionary<PointD,LineD>();
            Dictionary<LineD, double> RealDist = new Dictionary<LineD,double>();
            Dictionary<LineD, double> RealAngle = new Dictionary<LineD,double>();

            if (DA.GetDataList(0, lineListInput)) //If it works...
            {
                // sort out duplicate Lines
                //========================================================
                List<Point3d> mPointList = new List<Point3d>();
                foreach (Line mLine in lineListInput)
                {
                    //compute middle points
                    Point3d middle = (mLine.From + mLine.To) * 0.5;
                    mPointList.Add(middle);
                }
                // add lines and middle points to dictionary
                Dictionary<Point3d, Line> inputMap = new Dictionary<Point3d, Line>();
                for (int i = 0; i < mPointList.Count; i++)
                {
                    if (inputMap.ContainsKey(mPointList[i]))
                        continue;
                    inputMap.Add(mPointList[i], lineListInput[i]);
                }
                lineList = inputMap.Values.ToList();

                /*
                // filter duplicate points
                mPointList = mPointList.Distinct().ToList();
                for (int i = 0; i < lineListInput.Count; i++)
                {
                    Point3d point = mPointList[i];
                    lineList[i] = inputMap[point];
                }*/

                //======================================================================
                foreach (Line a in lineList)

                {
                    if (a.IsValid)
                    {

                        PointD start = new PointD(a.FromX, a.FromY);
                        PointD end = new PointD(a.ToX, a.ToY);
                        LineD b = new LineD(start, end);
                        lineDList.Add(b);
                    }
                }

                    Subdivision Graph;
                    Graph = new Subdivision();
                    currLinesArr = lineDList.ToArray();
                    Graph = Subdivision.FromLines(currLinesArr);
                    InverseGraph = Tools.ConstructInverseGraph(Graph, ref RealDist, ref RealAngle, ref InverseEdgesMapping);
                    SubdShortestPath ShortPahtesMetric = new SubdShortestPath(InverseGraph, RealDist);

                    ShortPahtesMetric.EvaluateMetric(null);

                    List<PointD> curVertices = new List<PointD>();
                    foreach (PointD pt in InverseGraph.Vertices.Keys)
                    {
                        curVertices.Add(pt);
                    }

                    LineD curEdge;

                    float[] finRes = new float[lineDList.Count];
                    float[] tempRes = ShortPahtesMetric.GetNormChoiceArray();
                    for (int i = 0; i < curVertices.Count; i++)
                    {
                        PointD point = curVertices[i];
                        curEdge = InverseEdgesMapping[point];
                        int idx = lineDList.IndexOf(curEdge);

                        finRes[idx] = tempRes[i];

                    }

                DA.SetDataList(0, new List<float>(finRes));
                DA.SetDataList(1, lineList);
            }
        }
Exemplo n.º 34
0
    public ErrCode SaveSubdivision(Subdivision _subdivision, out int subdivision_id)
    {
        ErrCode err = SiteProvider.CurrentProvider.SaveSubdivision(_subdivision, out subdivision_id);

        return err;
    }
Exemplo n.º 35
0
 /// <summary>
 /// Список дочерних подразделений
 /// </summary>
 /// <returns>Список дочерних подразделений</returns>
 /// <param name="uow">Unit of Work</param>
 /// <param name="parentSubdivision">Подразделение, список дочерних подразделений которого требуется вернуть</param>
 /// <param name="orderByDescending">Если <c>true</c>, то сортируется список по убыванию.</param>
 public IList <Subdivision> GetChildDepartments(IUnitOfWork uow, Subdivision parentSubdivision, bool orderByDescending = false)
 {
     return(GetAllDepartmentsOrderedByName(uow, orderByDescending).Where(s => s.ParentSubdivision == parentSubdivision).ToList());
 }
Exemplo n.º 36
0
 public virtual void Update(Subdivision sub)
 {
 }
        public IList <object[]> GetGuilties(UndeliveredOrdersFilter filter)
        {
            OrderItem    orderItemAlias    = null;
            Nomenclature nomenclatureAlias = null;

            UndeliveredOrder undeliveredOrderAlias = null;

            Domain.Orders.Order oldOrderAlias       = null;
            Domain.Orders.Order newOrderAlias       = null;
            Employee            oldOrderAuthorAlias = null;
            Counterparty        counterpartyAlias   = null;
            DeliveryPoint       undeliveredOrderDeliveryPointAlias = null;
            Subdivision         subdivisionAlias        = null;
            GuiltyInUndelivery  guiltyInUndeliveryAlias = null;

            var subquery19LWatterQty = QueryOver.Of <OrderItem>(() => orderItemAlias)
                                       .Where(() => orderItemAlias.Order.Id == oldOrderAlias.Id)
                                       .Left.JoinQueryOver(i => i.Nomenclature, () => nomenclatureAlias)
                                       .Where(n => n.Category == NomenclatureCategory.water && n.TareVolume == TareVolume.Vol19L)
                                       .Select(Projections.Sum(() => orderItemAlias.Count));

            var query = InfoProvider.UoW.Session.QueryOver <UndeliveredOrder>(() => undeliveredOrderAlias)
                        .Left.JoinAlias(u => u.OldOrder, () => oldOrderAlias)
                        .Left.JoinAlias(u => u.NewOrder, () => newOrderAlias)
                        .Left.JoinAlias(() => oldOrderAlias.Client, () => counterpartyAlias)
                        .Left.JoinAlias(() => oldOrderAlias.Author, () => oldOrderAuthorAlias)
                        .Left.JoinAlias(() => oldOrderAlias.DeliveryPoint, () => undeliveredOrderDeliveryPointAlias)
                        .Left.JoinAlias(() => undeliveredOrderAlias.GuiltyInUndelivery, () => guiltyInUndeliveryAlias)
                        .Left.JoinAlias(() => guiltyInUndeliveryAlias.GuiltyDepartment, () => subdivisionAlias);

            if (filter?.RestrictDriver != null)
            {
                var oldOrderIds = UndeliveredOrdersRepository.GetListOfUndeliveryIdsForDriver(InfoProvider.UoW, filter.RestrictDriver);
                query.Where(() => oldOrderAlias.Id.IsIn(oldOrderIds.ToArray()));
            }

            if (filter?.RestrictOldOrder != null)
            {
                query.Where(() => oldOrderAlias.Id == filter.RestrictOldOrder.Id);
            }

            if (filter?.RestrictClient != null)
            {
                query.Where(() => counterpartyAlias.Id == filter.RestrictClient.Id);
            }

            if (filter?.RestrictAddress != null)
            {
                query.Where(() => undeliveredOrderDeliveryPointAlias.Id == filter.RestrictAddress.Id);
            }

            if (filter?.RestrictOldOrderAuthor != null)
            {
                query.Where(() => oldOrderAuthorAlias.Id == filter.RestrictOldOrderAuthor.Id);
            }

            if (filter?.RestrictOldOrderStartDate != null)
            {
                query.Where(() => oldOrderAlias.DeliveryDate >= filter.RestrictOldOrderStartDate);
            }

            if (filter?.RestrictOldOrderEndDate != null)
            {
                query.Where(() => oldOrderAlias.DeliveryDate <= filter.RestrictOldOrderEndDate.Value.AddDays(1).AddTicks(-1));
            }

            if (filter?.RestrictNewOrderStartDate != null)
            {
                query.Where(() => newOrderAlias.DeliveryDate >= filter.RestrictNewOrderStartDate);
            }

            if (filter?.RestrictNewOrderEndDate != null)
            {
                query.Where(() => newOrderAlias.DeliveryDate <= filter.RestrictNewOrderEndDate.Value.AddDays(1).AddTicks(-1));
            }

            if (filter?.RestrictGuiltySide != null)
            {
                query.Where(() => guiltyInUndeliveryAlias.GuiltySide == filter.RestrictGuiltySide);
            }

            if (filter != null && filter.IsProblematicCasesChkActive)
            {
                query.Where(() => !guiltyInUndeliveryAlias.GuiltySide.IsIn(filter.ExcludingGuiltiesForProblematicCases));
            }

            if (filter?.RestrictGuiltyDepartment != null)
            {
                query.Where(() => subdivisionAlias.Id == filter.RestrictGuiltyDepartment.Id);
            }

            if (filter?.RestrictInProcessAtDepartment != null)
            {
                query.Where(u => u.InProcessAtDepartment.Id == filter.RestrictInProcessAtDepartment.Id);
            }

            if (filter?.NewInvoiceCreated != null)
            {
                if (filter.NewInvoiceCreated.Value)
                {
                    query.Where(u => u.NewOrder != null);
                }
                else
                {
                    query.Where(u => u.NewOrder == null);
                }
            }

            if (filter?.RestrictUndeliveryStatus != null)
            {
                query.Where(u => u.UndeliveryStatus == filter.RestrictUndeliveryStatus);
            }

            if (filter?.RestrictUndeliveryAuthor != null)
            {
                query.Where(u => u.Author == filter.RestrictUndeliveryAuthor);
            }

            int position = 0;
            var result   = query.SelectList(list => list
                                            .SelectGroup(u => u.Id)
                                            .Select(
                                                Projections.SqlFunction(
                                                    new SQLFunctionTemplate(
                                                        NHibernateUtil.String,
                                                        "GROUP_CONCAT(CASE ?1 WHEN 'Department' THEN IFNULL(CONCAT('Отд: ', ?2), 'Отдел ВВ') WHEN 'Client' THEN 'Клиент' WHEN 'Driver' THEN 'Водитель' WHEN 'ServiceMan' THEN 'Мастер СЦ' WHEN 'None' THEN 'Нет (не недовоз)' WHEN 'Unknown' THEN 'Неизвестно' ELSE ?1 END ORDER BY ?1 ASC SEPARATOR '\n')"
                                                        ),
                                                    NHibernateUtil.String,
                                                    Projections.Property(() => guiltyInUndeliveryAlias.GuiltySide),
                                                    Projections.Property(() => subdivisionAlias.ShortName)
                                                    )
                                                )
                                            .SelectSubQuery(subquery19LWatterQty)
                                            )
                           .List <object[]>()
                           .GroupBy(x => x[1])
                           .Select(r => new[] { r.Key, r.Count(), position++, r.Sum(x => x[2] == null ? 0 : (decimal)x[2]) })
                           .ToList();

            return(result);
        }