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(); } }
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); }
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); } }
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(); } }
private DrinkDto LoadDrink(BeerControlEntities context, int?idDrink) { if (!idDrink.HasValue) { return(null); } var dbDrink = context.Drink.Find(idDrink); return(DtoFactory.Create(dbDrink)); }
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); }
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(); } }
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); } }
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); }
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(); } }
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(); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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(); } }
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 }); } } } }
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 }); }
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 }); }
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(); } } }