public SeanceView JSonStringToSeance(string strSeance) { try { SeanceView seance = new SeanceView(); strSeance = strSeance.Replace("{\"", "").Replace("\"}", ""); string[] filter = { "\",\"", "\":\"" }; string[] words = strSeance.Split(filter, StringSplitOptions.None); //распихиваем весь класс в словарь Dictionary <string, string> list = new Dictionary <string, string>(); for (int i = 0; i < words.Length / 2; i++) { list.Add(words[i * 2], words[i * 2 + 1]); } //инициализируем киносеанс из словаря seance.Name = list["Name"]; seance.Start = DateTime.ParseExact(list["Start"].Replace(" ", ""), "yyyy-MM-ddHH:mm", System.Globalization.CultureInfo.InvariantCulture); return(seance); } catch (Exception) { return(null); } }
/// <summary> /// Метод добавляет новый киносеанс в БД и отовещает всех загруженные клиенты /// </summary> /// <param name="seanse">Новый киносеанс для добавление в БД</param> /// <returns></returns> public async Task <string> AddSeanseAsync(string seanse) { try { // SeanceView newSeanceView = JsonConvert.DeserializeObject<SeanceView>(seanse);//не работает //парсим вручную SeanceView newSeanceView = JSonStringToSeance(seanse); //валидация нового киносеанс TryValidateModel(newSeanceView); if (ModelState.IsValid) { //Приведение модели к типу в БД Seance newSeance = new Seance() { Name = newSeanceView.Name, Start = (DateTime)newSeanceView.Start }; try { _seanceRepo.Create(newSeance); } catch (Exception ex) { return("Ошибка выполнения операции создания нового элемента в базе данных."); } //Оповещаем всех await NotifyAllClientsAsync(new List <Seance>() { newSeance }, new List <Seance>()); return("");//все хорошо } return(string.Join(";<br>", ModelState.Values.SelectMany(x => x.Errors).Select(x => x.ErrorMessage)));//все плохо, сбор ошибок } catch (Exception ex) { return("Проверте, все ли поля заполнены."); } }
public IActionResult Put(int id, /* [FromBody]*/ SeanceView seanceView) { try { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } if (id != seanceView.Id) { return(BadRequest()); } } catch (Exception ex) { return(BadRequest()); } try { Seance seanceOld = _seanceRepo.FindById(id); seanceOld.Name = seanceView.Name; seanceOld.Start = (DateTime)seanceView.Start; } catch (DbUpdateConcurrencyException) { if (!SeanceExists(id)) { return(NotFound()); } else { return(BadRequest()); } } return(StatusCode((int)HttpStatusCode.NoContent)); }
public IActionResult Post(/*[FromBody]*/ SeanceView seanceView) { try { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } Seance seance = new Seance { Name = seanceView.Name, Start = (DateTime)seanceView.Start }; _seanceRepo.Create(seance); return(Ok(seance)); } catch (Exception ex) { return(BadRequest()); } }