public async Task <IActionResult> Update(long id, [FromBody] Promos item)
        {
            // set bad request if contact data is not provided in body
            if (item == null || id == 0)
            {
                return(BadRequest());
            }

            var details = await _context.Promos.SingleOrDefaultAsync(t => t.Id == id);

            if (details == null)
            {
                return(NotFound());
            }

            details.PromID           = item.PromID;
            details.Promoname        = item.Promoname;
            details.Price            = item.Price;
            details.PromoDescription = item.PromoDescription;
            details.GroupId          = item.GroupId;
            details.IsPromoRecurring = item.IsPromoRecurring;
            details.RecurringPromoId = item.RecurringPromoId;
            details.Spiel            = item.Spiel;
            details.UpdatedAt        = DateTime.Now;

            if (await _context.SaveChangesAsync() > 0)
            {
                return(Ok(new { message = "Hi Renzen Promo is updated successfully.", details }));
            }


            return(Ok(new {
                message = "failed."
            }));
        }
        /// <summary>
        /// Load Promos
        /// </summary>
        /// <returns></returns>
        private Promos LoadPromoTestData()
        {
            var firstPromo = new Promo
            {
                PromoID  = "1",
                Day      = 1,
                TotalQty = 1,
                MaxLink  = 2,
                Amount   = 10
            };

            var secondPromo = new Promo
            {
                PromoID  = "2",
                Day      = 1,
                TotalQty = 1,
                MaxLink  = 2,
                Amount   = 20
            };

            var promos = new Promos {
                { firstPromo, "" }, { secondPromo, "" }
            };

            return(promos);
        }
        //   to clear all promotions before reloading them
        /// <summary>
        /// Method to clear all promos
        /// </summary>
        /// <returns></returns>
        public bool Clear_AllPromos(ref Promos promos)
        {
            var dateStart = DateTime.Now;

            Performancelog.Debug($"Start,PromoManager,Clear_AllPromos,{string.Empty},{DateTime.Now:hh.mm.ss.ffffff}");

            var promoIDs = GetPromosForToday().Select(p => p.PromoID).ToList();

            if (promoIDs.Count != promos.Count)
            {
                Performancelog.Debug($"End,PromoManager,Clear_AllPromos,{DateTime.Now.Subtract(dateStart).TotalMilliseconds},{DateTime.Now:hh.mm.ss.ffffff}");

                return(false);
            }

            foreach (var promoId in promoIDs)
            {
                var strKey = promoId;
                if (!string.IsNullOrEmpty(strKey))
                {
                    promos.Remove(strKey);
                }
            }
            Performancelog.Debug($"End,PromoManager,Clear_AllPromos,{DateTime.Now.Subtract(dateStart).TotalMilliseconds},{DateTime.Now:hh.mm.ss.ffffff}");

            return(true);
        }
        public (Promos promos, Exception exception) Updatepromos(Promos _promos)
        {
            Promos promos = this.Promos.SingleOrDefault((Promos promos) => promos.Id == _promos.Id);

            if (promos == null)
            {
                return(null, new ArgumentNullException($"promos with id: {_promos.Id} not found"));
            }

            if (_promos.Id != 0)
            {
                promos.Name  = _promos.Name;
                promos.Value = _promos.Value;
            }

            try
            {
                _db.SaveChanges();
            }
            catch (Exception e)
            {
                return(null, new DbUpdateException($"Cannot save changes: {e.Message}"));
            }

            return(_promos, null);
        }
        public Promos AddPromo(string name, int value,
                               int ProductId, int BrandId, int Category, bool IsEnabled)
        {
            Promos promo = ToEntity(name, value, ProductId, BrandId, Category, IsEnabled);

            if (name.Contains("brand"))//(promo.BrandId != 0)
            {
                //string brandName = "brand";
                //_brandsService.AddPromoForBrand(promo.Id, promo.Name/*brandName*/, promo.UniversalId, promo.IsEnabled);
            }
            if (name.Contains("product"))//(promo.ProductId != 0)
            {
                //string brandName = "product";
                //_productsService.AddPromoForProduct(promo.Id, promo.Name/*brandName*/, promo.UniversalId, promo.IsEnabled);
            }
            if (name.Contains("categori"))//(promo.Category != 0)
            {
                //string brandName = "categori";
                //_categoriesService.AddPromoForCategories(promo.Id, promo.Name/*brandName*/, promo.UniversalId, promo.IsEnabled);
            }
            //Product datadb = _Dataproducts.SingleOrDefault((Product product) => product.Name == name);


            Promos.Add(promo);
            try
            {
                _db.SaveChanges();
            }
            catch
            {
                return(null);
            }

            return(promo);
        }
示例#6
0
        public IActionResult Put([FromBody] Promos value)
        {
            var data = _promosService.Updatepromos(value);

            if (data.promos == null)
            {
                return(BadRequest(data.exception.Message));
            }
            else
            {
                return(Ok(data));
            }
        }
示例#7
0
        public IActionResult Get(int id)
        {
            Promos promos = _promosService.GetPromoById(id);

            if (promos == null)
            {
                return(NotFound($"No promo found with id: {id}"));
            }
            else
            {
                return(Ok(promos));
            }
        }
示例#8
0
        public IActionResult Post([FromBody] Promos value)
        {
            var data = _promosService.AddPromo(value.Name, value.Value,
                                               value.ProductId, value.BrandId, value.CategoryId, value.IsEnabled);

            if (data == null)
            {
                return(BadRequest());
            }
            else
            {
                return(Ok());
            }
        }
        public async Task <IActionResult>  Post([FromBody] Promos item)
        {
            if (ModelState.IsValid)
            {
                await _context.AddAsync(item).ConfigureAwait(false);
                await _context.SaveChangesAsync().ConfigureAwait(false);
            }
            else
            {
                return BadRequest(ModelState);
            }

            //return Ok(item);
            return(Ok(new { message = "Promo successfully added." }));
        }
示例#10
0
 public PromosDTO ToDTO(Promos promos)
 {
     if (promos != null)
     {
         return new PromosDTO
                {
                    Id        = promos.Id,
                    Name      = promos.Name,
                    Value     = promos.Value,
                    IsEnabled = promos.IsEnabled
                }
     }
     ;
     return(null);
 }
示例#11
0
        // Load all the promotions in the Promos collection. Can load a specified promo or all of them
        /// <summary>
        /// Method to load all promos
        /// </summary>
        /// <param name="optPromoId">PromoID</param>
        /// <returns>Promos</returns>
        public Promos Load_Promos(string optPromoId)
        {
            var dateStart = DateTime.Now;

            Performancelog.Debug($"Start,PromoManager,Load_Promos,{string.Empty},{DateTime.Now:hh.mm.ss.ffffff}");

            var promos = CacheManager.GetPromosForPromoId(optPromoId);

            if (promos != null && promos.Count != 0)
            {
                return(promos);
            }
            promos = new Promos();
            var store        = CacheManager.GetStoreInfo();
            var offSet       = store?.OffSet ?? 0;
            var none         = _resourceManager.GetResString(offSet, 347);
            var promoHeaders = _promoService.GetPromoHeadersForToday(optPromoId);

            foreach (var promoHeader in promoHeaders)
            {
                var promo      = promoHeader;
                var promoLines = new Promo_Lines();

                //promo.MaxLink = _promoService.GetMaxLink(promo.PromoID);
                //var noOfLinks = _promoService.GetNumberOfLinks(promo.PromoID);
                //foreach (var noOfLink in noOfLinks)
                //{
                //    if (noOfLink > 1)
                //    {
                //        promo.MultiLink = true;
                //        break;
                //    }
                //}

                var promoDetails = _promoService.GetPromoLines(promo.PromoID, none);
                foreach (var promoDetail in promoDetails)
                {
                    promoLines.AddLine(promoDetail, "");
                }
                promo.Promo_Lines = promoLines;
                promos.Add(promo, promo.PromoID);
            }
            Performancelog.Debug($"End,PromoManager,Load_Promos,{DateTime.Now.Subtract(dateStart).TotalMilliseconds},{DateTime.Now:hh.mm.ss.ffffff}");
            CacheManager.AddPromos(optPromoId, promos);
            return(promos);
        }
        // GET api/Promocion/5
        public HttpResponseMessage PostPromos([FromBody] Promos p)
        {
            HttpResponseMessage response;

            try
            {
                PromocionService service = (PromocionService) new PromocionService().setDatabase(db);

                List <Promocion> _p = service.GetPromos(p);

                response = this.getSuccessResponse(_p);
            }
            catch (Exception e)
            {
                response = this.getErrorResponse(e);
            }
            return(response);
        }
示例#13
0
        private async Task <Promos> GetPromosFromUrl(string url, int retry)
        {
            try
            {
                using (HttpClient client = new HttpClient())
                {
                    client.DefaultRequestHeaders.Add("User-Agent", $"KiteBotCore 1.1 GB Discord Bot that calls api every {RefreshRate / 1000} seconds.");
                    Promos json = JsonConvert.DeserializeObject <Promos>(await client.GetStringAsync(url).ConfigureAwait(false));
                    return(json);
                }
            }
            catch (Exception)
            {
                if (++retry < 3)
                {
                    await Task.Delay(10000).ConfigureAwait(false);

                    return(await GetPromosFromUrl(url, retry).ConfigureAwait(false));
                }
                throw new TimeoutException();
            }
        }
示例#14
0
        public (bool result, Exception exception) DeletePromoById(int id)
        {
            Promos promos = Promos.SingleOrDefault((Promos promos) => promos.Id == id);

            if (promos == null)
            {
                return(false, new ArgumentNullException($"Promo with id: {id} not found"));
            }

            EntityEntry <Promos> result = Promos.Remove(promos);

            try
            {
                _db.SaveChanges();
            }
            catch (Exception e)
            {
                return(false, new DbUpdateException($"Cannot save changes: {e.Message}"));
            }

            return(result.State == EntityState.Deleted, null);
        }
        public List <Promocion> GetPromos(Promos pLista)
        {
            List <Promocion> Resul    = new List <Promocion>();
            List <Promocion> ppLista  = this.db.Promocion.ToList();
            List <Producto>  pListav2 = new List <Producto>();

            foreach (Producto pr1 in pLista.Productos)
            {
                Producto pr2 = this.db.Producto.Find(pr1.idProducto);
                pListav2.Add(pr2);
            }

            bool    aplica         = true;
            decimal sumaProductos  = 0;
            decimal precioProducto = 0;



            foreach (Promocion _p in ppLista)
            {
                foreach (PromocionProducto _pp in _p.PromocionProducto)
                {
                    bool existe = false;
                    foreach (Producto _prod in pListav2)
                    {
                        if (_prod.idProducto == _pp.idProducto)
                        {
                            existe = true;
                            if (pLista.idMedioPago == 1)
                            {
                                precioProducto = _prod.PrecioContado == null?0:(decimal)_prod.PrecioContado;
                            }
                            else
                            {
                                precioProducto = _prod.PrecioLista == null?0:(decimal)_prod.PrecioLista;
                            }
                            sumaProductos += precioProducto;
                            break;
                        }
                    }

                    if (!existe)
                    {
                        aplica = false;
                        break;
                    }
                }

                if (aplica)
                {
                    Promocion prod = this.db.Promocion.Find(_p.IdPromocion);
                    if (pLista.idMedioPago == 1)
                    {
                        prod.PrecioContado = sumaProductos - prod.PrecioContado;
                    }
                    else
                    {
                        prod.PrecioTarjeta = sumaProductos - prod.PrecioTarjeta;
                    }
                    Resul.Add(prod);
                }
            }


            return(Resul);
        }
示例#16
0
        public static void AddPromos(string promoId, Promos promos)
        {
            MemCacher.Delete($"PROMOS_{promoId}");

            MemCacher.Add($"PROMOS_{promoId}", promos, DateTimeOffset.UtcNow.AddHours(1));
        }