Beispiel #1
0
        public async Task <CreateSystemResponse> Get(Guid id)
        {
            var response = new CreateSystemResponse();

            var(system, error) = await GetPrepare(id.ToString());

            if (error != null)
            {
                response.Error = error;
                return(response);
            }

            response.Json     = system.AutosavedJson;
            response.Succeded = true;
            return(response);
        }
Beispiel #2
0
        public async Task <CreateSystemResponse> Create(CreateSystem system)
        {
            var response = new CreateSystemResponse();

            if (string.IsNullOrEmpty(system.Name))
            {
                response.Error = "Введите название системы";
                return(response);
            }
            if (system.Name.Length > 40)
            {
                response.Error = "Слишком длинное название системы";
                return(response);
            }
            if (system.About == null)
            {
                system.About = "";
            }
            if (system.About.Length > 140)
            {
                response.Error = "Слишком длинное описание системы";
                return(response);
            }
            var user = await _userManager.GetUserAsync(User);

            var obj = new Test
            {
                Name        = system.Name,
                Description = system.About,
                User        = user
            };
            var        pictureTask = Task.CompletedTask;
            FileStream stream      = null;

            if (system.Picture != null)
            {
                if (system.Picture.Length > 5 * 1024 * 1024)
                {
                    response.Error = "Картинка слишком большая";
                    return(response);
                }
                var path = "/systems/" + obj.Id;
                switch (system.Picture.ContentType)
                {
                case "image/gif":
                    path += ".gif";
                    break;

                case "image/jpeg":
                    path += ".jpg";
                    break;

                case "image/png":
                    path += ".png";
                    break;

                default:
                    response.Error = "Картинка неизвестного формата";
                    return(response);
                }
                stream      = new FileStream(_hostingEnvironment.WebRootPath + path, FileMode.Create);
                pictureTask = system.Picture.CopyToAsync(stream);
                path       += "?d=" + DateTimeOffset.Now.ToUnixTimeMilliseconds();
                obj.Picture = path;
            }
            var responseObj = new TestJson
            {
                system = new SystemJson
                {
                    name    = obj.Name,
                    picture = obj.Picture,
                    about   = obj.Description,
                    pub     = obj.Published,
                    guid    = obj.Id.ToString()
                }
            };
            var json = JsonConvert.SerializeObject(responseObj);

            obj.PublishedJson = json;
            obj.AutosavedJson = json;
            _db.Tests.Add(obj);

            response.Succeded = true;
            response.Json     = json;

            await Task.WhenAll(pictureTask, _db.SaveChangesAsync());

            stream?.Close();
            return(response);
        }