public async Task <HttpResponseMessage> UploadDataFile([FromUri] Guid objectId)
        {
            var obj = await _dbContext.HierarchyObjectContext.Entities.FirstOrDefaultAsync(o => o.Id == objectId);

            if (obj == null)
            {
                return(Request.CreateErrorResponse(HttpStatusCode.NotFound, "Object not found"));
            }

            if (HttpContext.Current.Request.Files.Count > 0)
            {
                foreach (string fileName in HttpContext.Current.Request.Files)
                {
                    var file = HttpContext.Current.Request.Files[fileName];
                    if (file.ContentType == "application/vnd.ms-excel" ||
                        file.ContentType == "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet")
                    {
                        try
                        {
                            var parser = new SacmigFileParser();
                            var data   = parser.Parse(file.InputStream);

                            //check characteristics
                            var characteristicsNames = data.GetCharacteristicsNames();
                            var serviceDescription   = "synced from Sacmig file format";
                            var characteristicsMap   = await MapCharateristicsNamesAndCreateWhetherDoesNotExist(characteristicsNames, serviceDescription);

                            using (var transaction = _dbContext.BeginTransaction())
                            {
                                try
                                {
                                    //save values
                                    foreach (var characteristic in characteristicsNames)
                                    {
                                        foreach (var value in data.GetCharacteristicValues(characteristic))
                                        {
                                            value.CharacteristicId  = characteristicsMap[characteristic];
                                            value.HierarchyObjectId = objectId;
                                            value.OwnerId           = User.Identity.Name;
                                            await _dbContext.CharacteristicValueDbSetManager.CreateAsync(value);
                                        }
                                    }
                                    transaction.Commit();
                                }
                                catch
                                {
                                    transaction.Rollback();
                                }
                            }
                        }
                        catch
                        {
                            continue;
                        }
                    }
                }
            }
            return(Request.CreateResponse(HttpStatusCode.OK));
        }
Пример #2
0
        public void GetDataTest()
        {
            using (var openFileDialog = new OpenFileDialog())
            {
                if (openFileDialog.ShowDialog() == DialogResult.OK)
                {
                    SacmigFileData data;
                    using (var stream = File.Open(openFileDialog.FileName, FileMode.Open))
                    {
                        var parser = new SacmigFileParser();
                        data = parser.Parse(stream);
                    }

                    var sz = JsonConvert.SerializeObject(data);
                    using (var sw = new StreamWriter($"{openFileDialog.SafeFileName}.json"))
                    {
                        sw.WriteLine(sz);
                    }
                }
            }
        }