public async Task <IActionResult> Post(MarkerModel model) { if (ModelState.IsValid) { IQueryable <Tag> tagQuery = _context.Tags; IFormFileCollection uploadedFiles = null; FilesModel files = null; DateAddObject dateAdd = null; List <FileDetail> fileDetailList = null; // Thu Apr 27 2017 19:45:48 GMT+0700 string[] formats = { "ddd MMM d yyyy HH:mm:ss" }; if (model.DataAdd != null) { DateTime.TryParseExact(model.DataAdd.Substring(0, 24), formats, CultureInfo.InvariantCulture, DateTimeStyles.None, out var date); if (date != null) { dateAdd = new DateAddObject { Date = date }; int length = 24; dateAdd.TimeZone = model.DataAdd .Substring(length, model.DataAdd.Length - length); await _context.DateAddObjects.AddAsync(dateAdd); await _context.SaveChangesAsync(); } } List <TagToMessage> tagToMessages = await GetTags(model.MarkerDescription, tagQuery); var tmp = model.MarcerCoordinate .Replace("(", "") .Replace(")", "") .Split(','); var user = _userManager.Users.FirstOrDefault(u => u.UserName == model.UserName); if (model.UploadedFiles != null) { fileDetailList = new List <FileDetail>(model.UploadedFiles.Count); uploadedFiles = await _fileService.UppFiles(model.UploadedFiles, fileDetailList, _appEnvironment); files = new FilesModel() { FileDetails = fileDetailList, DateAddObjectId = dateAdd?.DateAddObjectId }; await _context.AddAsync(files); await _context.SaveChangesAsync(); } List <Coordinate> coordinate = new List <Coordinate>() { new Coordinate() { Latitude = tmp[0], Longitude = tmp[1] } }; MessageInfo markerMessage = new MessageInfo() { Coordinates = coordinate, Title = model.MarkerTitle, Description = model.MarkerDescription, UserId = user?.Id, DateAddObjectId = dateAdd?.DateAddObjectId, ObjectColor = model.ObjectColor, TagToMessage = tagToMessages, IsLine = false }; if (files != null) { markerMessage.FilesModelId = files.FilesModelId; } var group = await _context.MarkerGroups .FirstOrDefaultAsync(gr => gr.MarkerGroupId == model.MarkerGroupId); markerMessage.MarkerGroupId = group?.MarkerGroupId; await _context.AddAsync(markerMessage); await _context.SaveChangesAsync(); var homeIndexViewModel = new HomeIndexViewModel() { ObjectColor = model.ObjectColor, Latitude = tmp[0], Longitude = tmp[1], Title = model.MarkerTitle, MarkerMessageId = markerMessage.MessageInfoId }; return(Json(homeIndexViewModel)); } return(Json("")); }
public async Task <IActionResult> SetLine(MarkerModel model) { if (ModelState.IsValid) { IQueryable <Tag> tagQuery = _context.Tags; IFormFileCollection uploadedFiles = null; FilesModel files = null; DateAddObject dateAdd = null; List <FileDetail> fileDetailList = null; // Thu Apr 27 2017 19:45:48 GMT+0700 string[] formats = { "ddd MMM d yyyy HH:mm:ss" }; DateTime.TryParseExact(model.DataAdd.Substring(0, 24), formats, CultureInfo.InvariantCulture, DateTimeStyles.None, out var date); if (date != null) { dateAdd = new DateAddObject { Date = date }; try { int length = 24; dateAdd.TimeZone = model.DataAdd.Substring(length, model.DataAdd.Length - length); } catch { } await _context.DateAddObjects.AddAsync(dateAdd); await _context.SaveChangesAsync(); } List <TagToMessage> tagToMessages = await GetTags(model.MarkerDescription, tagQuery); var split = model.MarcerCoordinate .Replace("(", "") .Replace(")", "") .Split(','); List <Coordinate> coordinates = new List <Coordinate>(split.Length / 2); for (int i = 0; i < split.Length; i += 2) { coordinates.Add(new Coordinate() { CoordinateIndex = i / 2, Latitude = split[i], Longitude = split[i + 1] }); } var user = _userManager.Users.FirstOrDefault(u => u.UserName == model.UserName); if (model.UploadedFiles != null) { fileDetailList = new List <FileDetail>(model.UploadedFiles.Count); uploadedFiles = model.UploadedFiles; foreach (var uploaded in uploadedFiles) { if (uploaded != null) { string path = "/Files/" + uploaded.FileName; using (var fileStream = new FileStream(_appEnvironment.WebRootPath + path, FileMode.Create)) { await uploaded.CopyToAsync(fileStream); } fileDetailList.Add(new FileDetail { Name = uploaded.FileName, Path = path }); } } //await _context.FileDetails.AddRangeAsync(fileDetailList); //await _context.SaveChangesAsync(); files = new FilesModel() { FileDetails = fileDetailList, DateAddObjectId = dateAdd?.DateAddObjectId }; await _context.AddAsync(files); await _context.SaveChangesAsync(); } MessageInfo markerMessage = new MessageInfo() { Coordinates = coordinates, Title = model.MarkerTitle, Description = model.MarkerDescription, UserId = user?.Id, DateAddObjectId = dateAdd?.DateAddObjectId, ObjectColor = model.ObjectColor, TagToMessage = tagToMessages, IsLine = true }; if (files != null) { markerMessage.FilesModelId = files.FilesModelId; } var group = await _context.MarkerGroups .FirstOrDefaultAsync(gr => gr.MarkerGroupId == model.MarkerGroupId); markerMessage.MarkerGroupId = group?.MarkerGroupId; await _context.AddAsync(markerMessage); await _context.SaveChangesAsync(); var homeLineViewModel = new HomeLineViewModel { ObjectColor = model.ObjectColor, MessageId = markerMessage.MessageInfoId, Title = markerMessage.Title, }; return(Json(homeLineViewModel)); } return(Json("")); }