Пример #1
0
        public async Task <IActionResult> CreateImg([FromBody] ObjectsInCanvas objectsInCanvas)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest("Bad request 400"));
            }

            var base64String = objectsInCanvas.Design.Split(",")[1];

            byte[] imageBytes = Convert.FromBase64String(base64String);

            using (MemoryStream ms = new MemoryStream(imageBytes, 0, imageBytes.Length))
            {
                ms.Write(imageBytes, 0, imageBytes.Length);
                var    img    = System.Drawing.Image.FromStream(ms, true);
                string cookie = "BeachTowelShop-Session";
                if (!Request.Cookies.ContainsKey(cookie))
                {
                    await Set("BeachTowelShop-Session", Guid.NewGuid().ToString(), 100);
                }
                if (Request.Cookies[cookie] != null)
                {
                    string cookieValueFromReq = Request.Cookies[cookie];

                    await CreateProduct(cookieValueFromReq, img, objectsInCanvas).ConfigureAwait(false);
                }
            }
            return(Ok("Added to Cart"));
        }
Пример #2
0
        private async Task CreateProduct(string cookieValueFromReq, Image img, ObjectsInCanvas objectsInCanvas)
        {
            string             applicationPath    = Path.GetDirectoryName(Assembly.GetEntryAssembly().Location);
            string             path               = $"{applicationPath}/wwwroot/received/{cookieValueFromReq.Substring(Math.Max(0, cookieValueFromReq.Length - 10))}";
            OrderDataViewModel orderDataViewModel = new OrderDataViewModel();
            var fullPath = path;

            //NOT SURE IF WE WANT THAT
            if (!Directory.Exists(path))
            {
                DirectoryInfo di = Directory.CreateDirectory(path);
                fullPath = $"{di}/{Guid.NewGuid()}.png";
                img.Save(fullPath, ImageFormat.Png);
            }
            else
            {
                fullPath = $"{path}/{Guid.NewGuid()}.png";
                img.Save(fullPath, ImageFormat.Png);
            }
            double count      = 0;
            var    canConvert = double.TryParse(objectsInCanvas.Count, out count);

            if (!canConvert || double.Parse(objectsInCanvas.Count) <= 0)
            {
                objectsInCanvas.Count = "1";
            }

            var splitPath = fullPath.Split("/").TakeLast(3).ToList();

            orderDataViewModel.SessionId        = cookieValueFromReq;
            orderDataViewModel.DesignName       = splitPath[2];
            orderDataViewModel.DesignFolderPath = splitPath[0] + "/" + splitPath[1];
            orderDataViewModel.Size             = objectsInCanvas.Size;
            orderDataViewModel.Count            = int.Parse(objectsInCanvas.Count);
            orderDataViewModel.Price            = await __productService.GetPriceForSizeGeneric(orderDataViewModel.Size).ConfigureAwait(false);

            orderDataViewModel.ProductId = splitPath[2];
            orderDataViewModel.Sum       = orderDataViewModel.Price * orderDataViewModel.Count;
            // orderDataViewModel.SessionId = Request.Cookies[cookie];
            StringBuilder sb = new StringBuilder();
            StringWriter  sw = new StringWriter(sb);
            var           listTextOrderDataViewModel = new List <TextOrderDataViewModel>();

            using (JsonDocument document = JsonDocument.Parse(objectsInCanvas.Objects))
            {
                JsonElement root = document.RootElement;
                using (JsonWriter writer = new JsonTextWriter(sw))
                {
                    foreach (JsonElement obj in root.EnumerateArray())
                    {
                        if (obj.GetProperty("type").ToString() == "text")
                        {
                            writer.Formatting = Formatting.Indented;

                            writer.WriteStartObject();
                            writer.WritePropertyName("backgroundColor");
                            writer.WriteValue(obj.GetProperty("backgroundColor").ToString());
                            writer.WritePropertyName("fontWeight");
                            writer.WriteValue(obj.GetProperty("fontWeight").ToString());
                            writer.WritePropertyName("text");
                            writer.WriteValue(obj.GetProperty("text").ToString());
                            writer.WritePropertyName("fontWeight");
                            writer.WriteValue(obj.GetProperty("fontWeight").ToString());
                            writer.WritePropertyName("fontSize");
                            writer.WriteValue(obj.GetProperty("fontSize").ToString());
                            writer.WritePropertyName("stroke");
                            writer.WriteValue(obj.GetProperty("stroke").ToString());
                            writer.WritePropertyName("fill");
                            writer.WriteValue(obj.GetProperty("fill").ToString());
                            writer.WritePropertyName("fontFamily");
                            writer.WriteValue(obj.GetProperty("fontFamily").ToString());
                            writer.WritePropertyName("underline");
                            writer.WriteValue(obj.GetProperty("underline").ToString());
                            writer.WritePropertyName("overline");
                            writer.WriteValue(obj.GetProperty("overline").ToString());
                            writer.WritePropertyName("fontStyle");
                            writer.WriteValue(obj.GetProperty("fontStyle").ToString());
                            writer.WriteEndObject();
                            var textOrderDataViewModel = JsonConvert.DeserializeObject <TextOrderDataViewModel>(sb.ToString());
                            textOrderDataViewModel.UserSessionId = cookieValueFromReq;
                            listTextOrderDataViewModel.Add(textOrderDataViewModel);
                            sb.Clear();
                        }
                    }
                }
                var userSessionDto = _mapper.Map <UserSessionCartDto>(orderDataViewModel);
                var userTextList   = _mapper.Map <List <UserTextSessionDto> >(listTextOrderDataViewModel);
                var cartItemDto    = await __orderService.SaveToCart(userSessionDto, userTextList).ConfigureAwait(false);

                var userId = cookieValueFromReq;

                List <CartViewModel> itemsInCache;
                if (!_cache.TryGetValue($"CartViewModel{userId}", out itemsInCache))
                {
                    itemsInCache = new List <CartViewModel>();
                    _cache.Set($"CartViewModel{userId}", itemsInCache);
                }
                itemsInCache = _cache.Get($"CartViewModel{userId}") as List <CartViewModel>;
                var cartItem = _mapper.Map <CartViewModel>(cartItemDto);
                itemsInCache.Add(cartItem);
                _cache.Remove($"CartViewModel{userId}");
                _cache.Set($"CartViewModel{userId}", itemsInCache);
            }
        }