public async Task AttachNewPlaceShouldThrowIfEntityWasNotFound()
        {
            var dataAccessModel = new EntitySalesDataAccessModel
            {
                Id           = Guid.NewGuid(),
                ActiveEntity = Array.Empty <EntityEntityDataAccessModel>()
            };

            GetRepository().EntitySalesToReturn = new EntitySales(dataAccessModel);
            Func <Task> act = () => GetService().AttachNewPlace(dataAccessModel.Id, Guid.NewGuid(), "MOW1", PredefinedUsers.MockUser);
            await Assert.ThrowsAsync <DomainException>(act);
        }
Example #2
0
 public EntitySales(EntitySalesDataAccessModel model)
 {
     Id          = model.Id;
     BasePointId = model.BasePointId;
     Address     = model.Address;
     if (model.EntityDeal != null)
     {
         Deal = new EntityDeal(model.EntityDeal);;
     }
     DateForActiveEntity = model.DateForActiveEntity;
     _activeEntity       = model.ActiveEntity?.Select(v => new EntityEntity(v)).ToList() ?? new List <EntityEntity>();
 }
        public async Task ShouldAddNewPlace()
        {
            var targetEntityGuid = Guid.NewGuid();
            var dataAccessModel  = new EntitySalesDataAccessModel
            {
                Id           = Guid.NewGuid(),
                ActiveEntity = new[]
                {
                    new EntityEntityDataAccessModel
                    {
                        Id             = targetEntityGuid,
                        Places         = Array.Empty <EntityPlaceDataAccessModel>(),
                        SystematicType = EntitySystematicType.ElioET
                    },
                    new EntityEntityDataAccessModel
                    {
                        Id             = Guid.NewGuid(),
                        Places         = Array.Empty <EntityPlaceDataAccessModel>(),
                        SystematicType = EntitySystematicType.ElioET
                    }
                }
            };


            var EntitySales = new EntitySales(dataAccessModel);

            GetRepository().EntitySalesToReturn = EntitySales;

            var now = DateTime.Now;

            GetDatetimeProvider().LocalNow = now;

            await GetService().AttachNewPlace(dataAccessModel.Id, targetEntityGuid, "MOW1", PredefinedUsers.MockUser);

            var Place = EntitySales.ActiveEntity.First(v => v.Id == targetEntityGuid).EntityPlaces.FirstOrDefault(v => v.Pcc == "MOW1");

            Assert.NotNull(Place);
            Assert.Equal("MOW1", Place.Pcc);
            Assert.NotEqual(Guid.Empty, (Guid)Place.Id);
            Assert.Equal(now.Date, Place.AuthorizationDate);
        }
        public async Task <EntitySales> GetById(Guid id)
        {
            var MainPoint = await _context.EusMainPoint
                            .Include(x => x.Organization)
                            .FirstOrDefaultAsync(s => s.Id == id);

            if (MainPoint == null)
            {
                return(null);
            }

            var model = new EntitySalesDataAccessModel
            {
                Id          = MainPoint.Id,
                MainPointId = MainPoint.MainPointId,
                Address     = MainPoint.Address,
                EntityAgent = MainPoint.Organization == null ? null : new EntityAgentDataAccessModel()
                {
                    Id = MainPoint.Organization.PartnerGuid, Code = MainPoint.Organization.Code, Name = MainPoint.Organization.Name
                }
            };

            return(new EntitySales(model));
        }
        public async Task <EntitySales> GetByEntityId(Guid id)
        {
            var EntityExpiration = await _context.EntityExpiration
                                   .Where(v => v.EntityExpirationGuid == id)
                                   .Include(x => x.Entity)
                                   .Include(x => x.EntityMainPoint)
                                   .Include(c => c.EntityMainPoint.EusMainPoint)
                                   .Include(c => c.EntityMainPoint.EusMainPoint.Organization)
                                   .Include(x => x.EntityMainPoint.Lts)
                                   .Include(x => x.EntityMainPoint.Lts.Select(c => c.RnTaps))
                                   .FirstOrDefaultAsync();

            var MainPoint = EntityExpiration?.EntityMainPoint?.EusMainPoint;

            if (MainPoint == null)
            {
                return(null);
            }

            var model = new EntitySalesDataAccessModel
            {
                Id          = MainPoint.Id,
                MainPointId = MainPoint.MainPointId,
                Address     = MainPoint.Address,
                EntityAgent = MainPoint.Organization == null ? null : new EntityAgentDataAccessModel()
                {
                    Id = MainPoint.Organization.PartnerGuid, Code = MainPoint.Organization.Code, Name = MainPoint.Organization.Name
                },
                ActiveEntity = new List <EntityEntityDataAccessModel>()
                {
                    new EntityEntityDataAccessModel
                    {
                        Id        = EntityExpiration.EntityExpirationGuid,
                        IsTest    = EntityExpiration.EntityMainPoint.IsTest,
                        Number    = EntityExpiration.Entity.Number,
                        SysType   = EntityExpiration.EntityMainPoint.Sys.ToEntitySys(),
                        ValidFrom = EntityExpiration.ValidFrom ?? DateTime.MinValue,
                        ValidTo   = EntityExpiration.ValidTo ?? DateTime.MaxValue,
                        Places    = EntityExpiration.EntityMainPoint.Sys == SysType.ElioET ||
                                    EntityExpiration.EntityMainPoint.Sys == SysType.EusET ||
                                    EntityExpiration.EntityMainPoint.Sys == SysType.SabreET ? EntityExpiration.EntityMainPoint.Lts?.Select(p => new EntityPlaceDataAccessModel
                        {
                            Id = p.LtGuid,
                            AuthorizationDate = p.AutorizeDate,
                            Pcc = p.PlaceId
                        }) : Array.Empty <EntityPlaceDataAccessModel>(),
                        RnEntity = EntityExpiration.EntityMainPoint.Sys == SysType.Rn
                        ? EntityExpiration.EntityMainPoint.Lts
                                   .Where(x => x.LtSystem == LtSystems.Rn && x.RnStatus)
                                   .Select(Lt => new RnEntityDataAccessModel
                        {
                            Grp         = Lt.GRP,
                            Agn         = Lt.AGN,
                            RnTerminals = Lt.EntityMainPoint.Lts.Where(x => x.LtSystem == LtSystems.Rn && x.RnStatus)
                                          .Select(si => new RnTerminalDataAccessModel
                            {
                                Id                = si.LtGuid,
                                TerminalNumber    = si.RnTaps.FirstOrDefault().Offc,
                                AuthorizationDate = si.AutorizeDate
                            }).ToList()
                        })
                                   .FirstOrDefault()
                         : null
                    }
                }
            };


            return(new EntitySales(model));
        }
        public async Task <EntitySales> GetByIdWithEntityActiveOnDate(Guid id, DateTime date)
        {
            var MainPoint = await _context.EusMainPoint.FirstOrDefaultAsync(s => s.Id == id);

            if (MainPoint == null)
            {
                return(null);
            }

            var activeEntity = await _context.EntityExpiration
                               .Where(v => v.EntityMainPoint.EusMainPointGuid == id)
                               .Where(v => v.ValidFrom <= date.Date && date.Date <= v.ValidTo && v.IsActive)
                               .Include(x => x.Entity)
                               .Include(x => x.EntityMainPoint)
                               .Include(x => x.EntityMainPoint.EusMainPoint)
                               .Include(x => x.EntityMainPoint.EusMainPoint.Organization)
                               .Include(x => x.EntityMainPoint.Lts)
                               .ToListAsync();

            var model = new EntitySalesDataAccessModel
            {
                DateForActiveEntity = date,
                Id          = MainPoint.Id,
                MainPointId = MainPoint.MainPointId,
                Address     = activeEntity.Select(v => v.EntityMainPoint.EusMainPoint.Address).FirstOrDefault(),
                EntityAgent = activeEntity.Select(v => new EntityAgentDataAccessModel
                {
                    Id   = v.EntityMainPoint.EusMainPoint.Organization.PartnerGuid,
                    Code = v.EntityMainPoint.EusMainPoint.Organization.Code,
                    Name = v.EntityMainPoint.EusMainPoint.Organization.Name
                }).FirstOrDefault(),
                ActiveEntity = activeEntity.Select(v => new EntityEntityDataAccessModel
                {
                    Id        = v.EntityExpirationGuid,
                    Number    = v.Entity.Number,
                    SysType   = v.EntityMainPoint.Sys.ToEntitySys(),
                    ValidFrom = v.ValidFrom ?? DateTime.MinValue,
                    ValidTo   = v.ValidTo ?? DateTime.MaxValue,
                    IsTest    = v.EntityMainPoint.IsTest,
                    Places    = v.EntityMainPoint.Sys == SysType.ElioET ||
                                v.EntityMainPoint.Sys == SysType.EusET ||
                                v.EntityMainPoint.Sys == SysType.SabreET ? v.EntityMainPoint.Lts.Select(p => new EntityPlaceDataAccessModel
                    {
                        Id = p.LtGuid,
                        AuthorizationDate = p.AutorizeDate,
                        Pcc = p.PlaceId
                    }) : Array.Empty <EntityPlaceDataAccessModel>(),

                    RnEntity = v.EntityMainPoint.Sys == SysType.Rn
                        ? v.EntityMainPoint.Lts
                               .Where(x => x.LtSystem == LtSystems.Rn && x.RnStatus)
                               .Select(Lt => new RnEntityDataAccessModel
                    {
                        Grp         = Lt.GRP,
                        Agn         = Lt.AGN,
                        RnTerminals = Lt.EntityMainPoint.Lts.Where(x => x.LtSystem == LtSystems.Rn && x.RnStatus)
                                      .Select(si => new RnTerminalDataAccessModel
                        {
                            Id                = si.LtGuid,
                            TerminalNumber    = si.RnTaps.FirstOrDefault().Offc,
                            AuthorizationDate = si.AutorizeDate
                        }).ToList()
                    })
                               .FirstOrDefault()
                         : null,
                }).ToList()
            };


            return(new EntitySales(model));
        }