Exemplo n.º 1
0
        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(""));
        }
Exemplo n.º 2
0
        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(""));
        }