Ejemplo n.º 1
0
        public void EditProducer(UserPass user, ProducerDto dto)
        {
            if (!_security.Check(user))
            {
                throw new AuthenticationException();
            }

            var idUser = _security.GetUserId(user);

            using (var context = new BeerControlEntities())
            {
                var dbProducer = context.Producer.Find(dto.Id);

                var producer = CreateDbProducer(context, dto, idUser);
                dbProducer.Account       = producer.Account;
                dbProducer.Address       = producer.Address;
                dbProducer.ActualAddress = producer.ActualAddress;
                dbProducer.ActualDate    = producer.ActualDate;
                dbProducer.Bank          = producer.Bank;
                dbProducer.Bik           = producer.Bik;
                dbProducer.Code          = producer.Code;
                dbProducer.INN           = producer.INN;
                dbProducer.Kpp           = producer.Kpp;
                dbProducer.Name          = producer.Name;
                dbProducer.Ogrn          = producer.Ogrn;

                context.SaveChanges();
            }
        }
Ejemplo n.º 2
0
        private List <SellDto> DoGetDrinkSells(BeerControlEntities context, int idMarket, int idDrink, DateTimeOffset startTs, DateTimeOffset endTs)
        {
            var list     = new List <SellDto>();
            var dbSells  = context.Sell.Where(s => s.idMarket == idMarket && s.idDrink == idDrink && s.Ts >= startTs && s.Ts <= endTs).OrderBy(s => s.Ts).ToArray();
            var priceIds = dbSells.Select(s => s.idPrice).Distinct();
            var dbPrices = context.Price.Where(p => priceIds.Contains(p.id)).Select(p => new { p.id, p.Val });
            var priceDic = new Dictionary <int, int>();

            foreach (var dbPrice in dbPrices)
            {
                priceDic.Add(dbPrice.id, dbPrice.Val);
            }

            foreach (var dbSell in dbSells)
            {
                int price;
                if (dbSell.idPrice == 0 || !priceDic.ContainsKey(dbSell.idPrice))
                {
                    price = 0;
                }
                else
                {
                    price = priceDic[dbSell.idPrice];
                }

                list.Add(DtoFactory.Create(dbSell, price));
            }

            return(list);
        }
Ejemplo n.º 3
0
        public MarketDetailConfigDto GetMarketDetailConfig(UserPass user, int idMarket)
        {
            if (!_security.Check(user))
            {
                throw new AuthenticationException();
            }

            var idUser = _security.GetUserId(user);

            using (var context = new BeerControlEntities())
            {
                var dto      = new MarketDetailConfigDto();
                var dbMarket = context.Market.Find(idMarket);
                dto.Id      = idMarket;
                dto.Name    = dbMarket.Name;
                dto.Code    = dbMarket.Code;
                dto.Address = dbMarket.Address;

                var dbDevice = context.Device.FirstOrDefault(d => d.idMarket == idMarket);
                if (dbDevice != null)
                {
                    dto.DeviceSerial = dbDevice.Uid;
                    dto.Drinks       = GetDrinks(context, dbDevice.id);
                }

                return(dto);
            }
        }
Ejemplo n.º 4
0
        public void AddDrinkConfig(UserPass user, DrinkConfigDto drinkConfig)
        {
            if (!_security.Check(user))
            {
                throw new AuthenticationException();
            }

            var idUser = _security.GetUserId(user);

            using (var context = new BeerControlEntities())
            {
                var producerNames = GetProducerNames(idUser, context);
                if (!producerNames.ContainsKey(drinkConfig.IdProducer))
                {
                    drinkConfig.IdProducer = 0;
                }

                if (string.IsNullOrEmpty(drinkConfig.Code))
                {
                    drinkConfig.Code = string.Format("D{0:D3}", context.Drink.Count(d => d.idUser == idUser));
                }

                context.Drink.Add(new Drink
                {
                    Name       = drinkConfig.Name,
                    Code       = drinkConfig.Code,
                    idProducer = drinkConfig.IdProducer,
                    idUser     = idUser
                });
                context.SaveChanges();
            }
        }
Ejemplo n.º 5
0
        private DrinkDto LoadDrink(BeerControlEntities context, int?idDrink)
        {
            if (!idDrink.HasValue)
            {
                return(null);
            }

            var dbDrink = context.Drink.Find(idDrink);

            return(DtoFactory.Create(dbDrink));
        }
Ejemplo n.º 6
0
        private SellSummaryDto DoGetMarketSellSummary(BeerControlEntities context, int idMarket, DateTimeOffset startTs, DateTimeOffset endTs)
        {
            var dto   = new SellSummaryDto();
            var sells = context.Sell.Where(s => s.idMarket == idMarket)// && s.Ts >= startTs && s.Ts <= endTs)
                        .Select(s => new { s.Sum, s.Volume, s.isCleaning }).ToArray();

            dto.Fill  = (uint)sells.Sum(s => s.Volume);
            dto.Money = (uint)sells.Where(s => s.isCleaning == false).Sum(s => s.Sum);

            return(dto);
        }
Ejemplo n.º 7
0
        public void AddProducer(UserPass user, ProducerDto producer)
        {
            if (!_security.Check(user))
            {
                throw new AuthenticationException();
            }

            var idUser = _security.GetUserId(user);

            using (var context = new BeerControlEntities())
            {
                context.Producer.Add(CreateDbProducer(context, producer, idUser));
                context.SaveChanges();
            }
        }
Ejemplo n.º 8
0
        public void SetMarketDetailConfig(UserPass user, int idMarket, MarketDetailConfigDto marketConfig)
        {
            if (!_security.Check(user))
            {
                throw new AuthenticationException();
            }

            var idUser = _security.GetUserId(user);

            using (var context = new BeerControlEntities())
            {
                var dbDevice = context.Device.FirstOrDefault(d => d.idMarket == idMarket);
                if (dbDevice == null)
                {
                    dbDevice = CreateDevice(idMarket, marketConfig);
                    context.Device.Add(dbDevice);
                }

                dbDevice.Uid = marketConfig.DeviceSerial;

                var dbMarket = context.Market.Find(idMarket);
                dbMarket.Address = marketConfig.Address;
                if (!string.IsNullOrEmpty(marketConfig.Name))
                {
                    dbMarket.Name = marketConfig.Name;
                }

                context.SaveChanges();

                foreach (var tabDrink in marketConfig.Drinks)
                {
                    var dbTabDrink = context.DeviceTap.FirstOrDefault(d => d.idDevice == dbDevice.id && d.TapCode == tabDrink.TapCode);
                    if (dbTabDrink == null)
                    {
                        dbTabDrink = CreateTabDrink(dbDevice.id, tabDrink);
                        context.DeviceTap.Add(dbTabDrink);
                    }

                    dbTabDrink.idFutureDrink   = tabDrink.NewDrink != null ? tabDrink.NewDrink.Id : (int?)null;
                    dbTabDrink.FutureDrinkDate = tabDrink.FutureDrinkDate;
                }

                context.SaveChanges();

                RefreshMarketDrinks(context, idMarket, marketConfig.Drinks);
            }
        }
Ejemplo n.º 9
0
        private static Dictionary <int, string> GetProducerNames(int idUser, BeerControlEntities context)
        {
            var producerNames = context.Producer.Where(p => p.idUser == idUser).Select(p => new { p.id, p.Name }).ToArray();
            var producerDic   = new Dictionary <int, string>();

            foreach (var pr in producerNames)
            {
                if (producerDic.ContainsKey(pr.id))
                {
                    continue;
                }

                producerDic.Add(pr.id, pr.Name);
            }

            return(producerDic);
        }
Ejemplo n.º 10
0
        public void SetSellStatus(UserPass user, SellDto sell, bool isCleaning)
        {
            if (!_security.Check(user))
            {
                throw new AuthenticationException();
            }

            using (var context = new BeerControlEntities())
            {
                var dbSell = context.Sell.FirstOrDefault(s => s.id == sell.Id);
                if (dbSell == null)
                {
                    return;
                }

                dbSell.isCleaning = isCleaning;
                context.SaveChanges();
            }
        }
Ejemplo n.º 11
0
        private void RefreshMarketDrinks(BeerControlEntities context, int idMarket, List <MarketDrinkListItemDto> drinks)
        {
            var           drinkIdArr = context.MarketDrink.Where(m => m.idMarket == idMarket).Select(d => d.idDrink).ToArray();
            HashSet <int> drinkIds   = new HashSet <int>();

            foreach (var drink in drinks)
            {
                if (drink.CurDrink != null)
                {
                    drinkIds.Add(drink.CurDrink.Id);
                }

                if (drink.NewDrink != null)
                {
                    drinkIds.Add(drink.NewDrink.Id);
                }
            }

            foreach (var fromDbDrinkId in drinkIdArr)
            {
                if (drinkIds.Contains(fromDbDrinkId))
                {
                    drinkIds.Remove(fromDbDrinkId);
                }
            }

            if (!drinkIds.Any())
            {
                return;
            }

            foreach (var idDrink in drinkIds)
            {
                context.MarketDrink.Add(new MarketDrink
                {
                    idMarket = idMarket,
                    idDrink  = idDrink
                });
            }

            context.SaveChanges();
        }
Ejemplo n.º 12
0
        public List <MarketConfigDto> GetMarketsConfig(UserPass user)
        {
            if (!_security.Check(user))
            {
                throw new AuthenticationException();
            }

            var idUser = _security.GetUserId(user);
            var list   = new List <MarketConfigDto>();

            using (var context = new BeerControlEntities())
            {
                var dbMarket = context.Market.Where(m => m.idUser == idUser);
                foreach (Market mr in dbMarket)
                {
                    list.Add(DtoFactory.CreateEx(mr));
                }
            }

            return(list);
        }
Ejemplo n.º 13
0
        public Dictionary <DrinkDto, List <SellDto> > GetMarketSells(UserPass user, int idMarket, DateTimeOffset startTs, DateTimeOffset endTs)
        {
            if (!_security.Check(user))
            {
                throw new AuthenticationException();
            }

            var items = new Dictionary <DrinkDto, List <SellDto> >();

            using (var context = new BeerControlEntities())
            {
                var drinkIds = context.MarketDrink.Where(m => m.idMarket == idMarket).Select(d => d.idDrink).ToArray();
                var dbDrinks = context.Drink.Where(d => drinkIds.Contains(d.id));
                foreach (var dbDrink in dbDrinks)
                {
                    items.Add(DtoFactory.Create(dbDrink), DoGetDrinkSells(context, idMarket, dbDrink.id, startTs, endTs));
                }
            }

            return(items);
        }
Ejemplo n.º 14
0
        public Dictionary <MarketDto, SellSummaryDto> GetSellSummary(UserPass user, DateTimeOffset startTs, DateTimeOffset endTs)
        {
            if (!_security.Check(user))
            {
                throw new AuthenticationException();
            }

            var idUser = _security.GetUserId(user);
            var items  = new Dictionary <MarketDto, SellSummaryDto>();

            using (var context = new BeerControlEntities())
            {
                var dbMarkets = context.Market.Where(m => m.idUser == idUser).ToArray();
                foreach (var dbMarket in dbMarkets)
                {
                    items.Add(DtoFactory.Create(dbMarket), DoGetMarketSellSummary(context, dbMarket.id, startTs, endTs));
                }
            }

            return(items);
        }
Ejemplo n.º 15
0
        public List <DrinkDto> GetDrinks(UserPass user)
        {
            if (!_security.Check(user))
            {
                throw new AuthenticationException();
            }

            var idUser = _security.GetUserId(user);
            var list   = new List <DrinkDto>();

            using (var context = new BeerControlEntities())
            {
                var dbDrinks = context.Drink.Where(d => d.idUser == idUser);
                foreach (var dbDrink in dbDrinks)
                {
                    list.Add(DtoFactory.Create(dbDrink));
                }
            }

            return(list);
        }
Ejemplo n.º 16
0
        public List <ProducerDto> GetProducers(UserPass user)
        {
            if (!_security.Check(user))
            {
                throw new AuthenticationException();
            }

            var idUser = _security.GetUserId(user);
            var list   = new List <ProducerDto>();

            using (var context = new BeerControlEntities())
            {
                var dbProducers = context.Producer.Where(p => p.idUser == idUser);
                foreach (var pr in dbProducers)
                {
                    list.Add(DtoFactory.Create(pr));
                }
            }

            return(list);
        }
Ejemplo n.º 17
0
        private List <MarketDrinkListItemDto> GetDrinks(BeerControlEntities context, long idDevice)
        {
            var drinks    = new List <MarketDrinkListItemDto>();
            var tapDrinks = new Dictionary <int, MarketDrinkListItemDto>();

            for (int i = 0; i < 30; i++)
            {
                int tapCode = i + 1;
                tapDrinks.Add(tapCode, new MarketDrinkListItemDto()
                {
                    TapCode = tapCode
                });
            }

            var dbDrinks = context.DeviceTap.Where(d => d.idDevice == idDevice).ToArray();

            foreach (var dbDr in dbDrinks)
            {
                MarketDrinkListItemDto item;
                if (!tapDrinks.ContainsKey(dbDr.TapCode))
                {
                    continue;
                }

                item             = tapDrinks[dbDr.TapCode];
                item.CurDrink    = LoadDrink(context, dbDr.idDrink);
                item.FutureDrink = LoadDrink(context, dbDr.idFutureDrink);
                if (dbDr.FutureDrinkDate.HasValue)
                {
                    item.FutureDrinkDate = dbDr.FutureDrinkDate.Value;
                }
            }

            foreach (var tapDrink in tapDrinks)
            {
                drinks.Add(tapDrink.Value);
            }

            return(drinks);
        }
Ejemplo n.º 18
0
        public Dictionary <MarketDto, PriceDto> GetDrinkPrices(UserPass user, int idDrink)
        {
            if (!_security.Check(user))
            {
                throw new AuthenticationException();
            }

            var idUser = _security.GetUserId(user);
            var prices = new Dictionary <MarketDto, PriceDto>();

            using (var context = new BeerControlEntities())
            {
                var dbMarket = context.Market.Where(m => m.idUser == idUser).Select(m => m.id).ToList();
                var dbPrice  = context.Price.Where(m => m.idDrink == idDrink && m.idMarket != null && dbMarket.Contains((int)m.idMarket));

                foreach (var pr in dbPrice)
                {
                }
            }

            return(prices);
        }
Ejemplo n.º 19
0
        public List <DrinkConfigDto> GetDrinksConfig(UserPass user)
        {
            if (!_security.Check(user))
            {
                throw new AuthenticationException();
            }

            var idUser = _security.GetUserId(user);
            var drinks = new List <DrinkConfigDto>();

            using (var context = new BeerControlEntities())
            {
                var producerNames = GetProducerNames(idUser, context);
                var dbDrinks      = context.Drink.Where(d => d.idUser == idUser);
                foreach (var drink in dbDrinks)
                {
                    drinks.Add(DtoFactory.Create(drink, producerNames));
                }
            }

            return(drinks);
        }
Ejemplo n.º 20
0
        public void AddMarketConfig(UserPass user, MarketDetailConfigDto dto)
        {
            if (!_security.Check(user))
            {
                throw new AuthenticationException();
            }

            var idUser = _security.GetUserId(user);

            using (var context = new BeerControlEntities())
            {
                var dbDevice = context.Device.FirstOrDefault(d => d.Uid == dto.DeviceSerial);
                if (dbDevice != null)
                {
                    throw new Exception("Device allready exists");
                }

                if (string.IsNullOrEmpty(dto.Code))
                {
                    dto.Code = string.Format("M{0:D3}", context.Market.Count(d => d.idUser == idUser));
                }

                var market = new Market
                {
                    Address = dto.Address,
                    Name    = dto.Name,
                    Code    = dto.Code,
                    idUser  = idUser
                };
                context.Market.Add(market);

                context.SaveChanges();

                dbDevice = CreateDevice(market.id, dto);
                context.Device.Add(dbDevice);
                context.SaveChanges();
            }
        }
Ejemplo n.º 21
0
 public void Refresh()
 {
     using (var context = new BeerControlEntities())
     {
         var dbDevices = context.Device.Select(d => new { d.id, d.Uid, d.idMarket }).ToList();
         foreach (var dbDevice in dbDevices)
         {
             if (_devices.ContainsKey(dbDevice.Uid))
             {
                 _devices[dbDevice.Uid].Id       = dbDevice.id;
                 _devices[dbDevice.Uid].IdMarket = dbDevice.idMarket;
             }
             else
             {
                 _devices.Add(dbDevice.Uid, new DbDevice
                 {
                     Id       = dbDevice.id,
                     IdMarket = dbDevice.idMarket
                 });
             }
         }
     }
 }
Ejemplo n.º 22
0
        private DrinkData ReadTabDrink(BeerControlEntities context, Fill fill)
        {
            var dbTap = context.DeviceTap.FirstOrDefault(t => t.idDevice == fill.idDevice && t.TapCode == fill.TapCode);

            if (dbTap == null)
            {
                return(new NullDrink());
            }

            var dbPrice = context.Price.FirstOrDefault(d => d.idDrink == dbTap.idDrink && fill.Ts >= d.StartTs && fill.Ts < d.EndTs);

            if (dbPrice == null)
            {
                return(new NullDrink());
            }

            return(new DrinkData
            {
                Id = dbTap.idDrink ?? 0,
                IdPrice = dbPrice.id,
                PriceVal = dbPrice.Val
            });
        }
Ejemplo n.º 23
0
        private static Producer CreateDbProducer(BeerControlEntities context, ProducerDto producer, int idUser)
        {
            if (string.IsNullOrEmpty(producer.Code))
            {
                producer.Code = string.Format("P{0:D3}", context.Producer.Count(d => d.idUser == idUser));
            }

            return(new Producer
            {
                Account = producer.Account,
                Address = producer.LawAdress,
                ActualAddress = producer.ActualAdress,
                ActualDate = producer.ActualDate,
                Bank = producer.Bank,
                Bik = producer.Bik,
                Code = producer.Code,
                idUser = idUser,
                INN = producer.Inn,
                Kpp = producer.Kpp,
                Name = producer.Name,
                Ogrn = producer.Ogrn
            });
        }
Ejemplo n.º 24
0
        public void AddFills(List <Fill> fills)
        {
            using (var context = new BeerControlEntities())
            {
                foreach (var fill in fills)
                {
                    var dbFill =
                        context.Fill.FirstOrDefault(
                            f =>
                            f.idDevice == fill.idDevice && f.TapCode == fill.TapCode && f.Ts == fill.Ts &&
                            f.OperationCode == fill.OperationCode);

                    if (dbFill != null)
                    {
                        continue;
                    }

                    context.Fill.Add(fill);
                    context.SaveChanges();

                    var drink = ReadTabDrink(context, fill);
                    context.Sell.Add(new Sell
                    {
                        idDrink    = drink.Id,
                        idFill     = fill.id,
                        idMarket   = IdMarket,
                        idPrice    = drink.IdPrice,
                        Ts         = fill.Ts,
                        Volume     = fill.Volume,
                        Sum        = (int)(((double)fill.Volume / 1000.0) * drink.PriceVal),
                        isCleaning = false
                    });

                    context.SaveChanges();
                }
            }
        }