public IHttpActionResult Post(PeriodCreateViewModel model) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } Period item = Mapper.Map <PeriodCreateViewModel, Period>(model); if (!_periodService.IsValid(item)) { ModelState.AddError(_periodService.Errors); return(BadRequest(ModelState)); } _periodService.Add(item); _db.SaveChanges(); return(Ok()); }
public async Task <HttpResponseMessage> Import() { if (!Request.Content.IsMimeMultipartContent()) { Request.CreateErrorResponse(HttpStatusCode.UnsupportedMediaType, "Định dạng không được server hỗ trợ"); } var root = HttpContext.Current.Server.MapPath("~/UploadedFiles/Excels"); if (!Directory.Exists(root)) { Directory.CreateDirectory(root); } var provider = new MultipartFormDataStreamProvider(root); Stream reqStream = Request.Content.ReadAsStreamAsync().Result; MemoryStream tempStream = new MemoryStream(); reqStream.CopyTo(tempStream); tempStream.Seek(0, SeekOrigin.End); StreamWriter writer = new StreamWriter(tempStream); writer.WriteLine(); writer.Flush(); tempStream.Position = 0; StreamContent streamContent = new StreamContent(tempStream); foreach (var header in Request.Content.Headers) { streamContent.Headers.Add(header.Key, header.Value); } try { // Read the form data. streamContent.LoadIntoBufferAsync().Wait(); //This is where it bugs out var result = await streamContent.ReadAsMultipartAsync(provider); //Upload files int addedCount = 0; foreach (MultipartFileData fileData in result.FileData) { if (string.IsNullOrEmpty(fileData.Headers.ContentDisposition.FileName)) { return(Request.CreateResponse(HttpStatusCode.NotAcceptable, "Yêu cầu không đúng định dạng")); } string fileName = fileData.Headers.ContentDisposition.FileName; if (fileName.StartsWith("\"") && fileName.EndsWith("\"")) { fileName = fileName.Trim('"'); } if (fileName.Contains(@"/") || fileName.Contains(@"\")) { fileName = Path.GetFileName(fileName); } var fullPath = Path.Combine(root, fileName); File.Copy(fileData.LocalFileName, fullPath, true); //insert to DB //var List <Period> listPeriod = new List <Period>(); listPeriod = this.ReadPeriodListFromExcel(fullPath); if (listPeriod.Count > 0) { foreach (var period in listPeriod) { _periodService.Add(period); addedCount++; } _periodService.Save(); } } return(Request.CreateResponse(HttpStatusCode.OK, "Đã nhập thành công " + addedCount + " sản phẩm thành công.")); } catch (Exception e) { return(Request.CreateErrorResponse(HttpStatusCode.InternalServerError, e)); } }