async public Task <MailingViewModel> FindMailing(string AppUserId, int MailingId) { if (AppUserId == null) { return(null); } var mailing = await(from m in db.Mailings.Include(m => m.GroupMailings).ThenInclude(gm => gm.Group) where m.Id == MailingId && m.SenderId == AppUserId select m).FirstOrDefaultAsync(); if (mailing == null) { return(null); } var result = new MailingViewModel() { Title = mailing.Title, Text = mailing.Text, Id = mailing.Id, TimeOfCreation = mailing.DateOfCreation }; var selectedGroups = from gm in mailing.GroupMailings select gm.Group.Id; var availableGroups = await(from g in db.Groups where g.UserId == AppUserId select g).ToListAsync(); result.Groups = new MultiSelectList(availableGroups, "Id", "Title", selectedGroups); return(result); }
async public Task <bool> EditMailing(string AppUserId, MailingViewModel Mailing) { // check on required fields if (AppUserId == null || Mailing.Text == null || Mailing.GroupIds == null) { return(false); } // search for edited mailing var editedMailing = await(from m in db.Mailings where m.SenderId == AppUserId && m.Id == Mailing.Id select m).FirstOrDefaultAsync(); if (editedMailing == null) { return(false); } // search for reciever groups var groups = await(from g in db.Groups where Mailing.GroupIds.Contains(g.Id) && g.UserId == AppUserId select g).ToListAsync(); if (!groups.Any()) { return(false); } // Removal of mailing from every group var groupMailings = await(from gm in db.GroupMailings where gm.MailingId == editedMailing.Id select gm).ToListAsync(); db.GroupMailings.RemoveRange(groupMailings); // Population of recieved groups var newGroupMailings = new List <GroupMailing>(); foreach (var iter in groups) { newGroupMailings.Add(new GroupMailing() { Group = iter, Mailing = editedMailing }); } editedMailing.Text = Mailing.Text; editedMailing.Title = Mailing.Title; await db.GroupMailings.AddRangeAsync(newGroupMailings); await db.SaveChangesAsync(); return(true); }
public ActionResult <bool> AddMailind(MailingViewModel mailing) { if (ModelState.IsValid) { var response = new { isSuccess = true, id = _mailingService.InsertMailing(_mapper.Map <Mailing>(mailing))?.Id }; return(Ok(response)); } return(BadRequest(ModelState)); }
async public Task <MailingViewModel> GetEmptyMailing(string AppUserId) { if (AppUserId == null) { return(null); } var result = new MailingViewModel(); var availableGroups = await(from g in db.Groups where g.UserId == AppUserId select g).ToListAsync(); result.Groups = new MultiSelectList(availableGroups, "Id", "Title"); return(result); }
async public Task <IActionResult> Edit(int MailingId) { string userId = User.FindFirst(ClaimTypes.NameIdentifier).Value; MailingViewModel mailingToEdit = await _mailingManager.FindMailing(userId, MailingId); if (mailingToEdit == null) { ModelState.AddModelError(string.Empty, "Failure"); return(RedirectToAction("Index", "Mailings")); } else { return(View(mailingToEdit)); } }
public ActionResult <bool> Update(int id, [FromBody] MailingViewModel mailing) { var oldMailing = _mailingService.GetMailing(id); if (oldMailing == null) { return(BadRequest("Таку розсилку не знайдено")); } if (ModelState.IsValid) { oldMailing.Name = mailing.Name; oldMailing.Content = mailing.Content; return(Ok(_mailingService.UpdateMailing(oldMailing, _mapper.Map <List <Person> >(mailing.Persons)))); } return(BadRequest(ModelState)); }
async public Task <IActionResult> Index(MailingViewModel NewMailing) { if (ModelState.IsValid) { string userId = User.FindFirst(ClaimTypes.NameIdentifier).Value; bool result = await _mailingManager.AddMailing(userId, NewMailing); if (!result) { ModelState.AddModelError(string.Empty, "Adding failed"); return(RedirectToAction("Index", "Mailings")); } else { return(RedirectToAction("Index", "Mailings")); } } return(RedirectToAction("Index", "Mailings")); }
public ActionResult <bool> Send(int id, [FromBody] MailingViewModel mailing) { var oldMailing = _mailingService.GetMailing(id); if (oldMailing == null) { return(BadRequest("Таку розсилку не знайдено")); } if (ModelState.IsValid) { oldMailing.Name = mailing.Name; oldMailing.Content = mailing.Content; foreach (var item in oldMailing.MailingPerson) { var body = mailing.Content.Replace("{name}", string.Format("{0} {1}", item.Person.FirstName, item.Person.LastName)); _smsService.Send(item.Person.Telephone, body); } return(Ok(_mailingService.UpdateMailing(oldMailing, _mapper.Map <List <Person> >(mailing.Persons)))); } return(BadRequest(ModelState)); }
async public Task <bool> AddMailing(string AppUserId, MailingViewModel Mailing) { // check on required fields if (AppUserId == null || Mailing.Text == null || Mailing.GroupIds == null || Mailing.Times == null) { return(false); } // searchin for reciever groups var groups = await(from g in db.Groups where Mailing.GroupIds.Contains(g.Id) && g.UserId == AppUserId select g).ToListAsync(); if (!groups.Any()) { return(false); } // creation and population of Times list string[] rawTimes = Mailing.Times.Split(','); var times = (from rt in rawTimes // for testing purposes //where Convert.ToDateTime(rt) > DateTime.UtcNow select Convert.ToDateTime(rt)).Distinct(); if (!times.Any()) { return(false); } // creating new mailing var newMailing = new Mailing() { SenderId = AppUserId, Title = Mailing.Title, Text = Mailing.Text, DateOfCreation = DateTime.UtcNow }; // populating group - mailings var groupMailings = new List <GroupMailing>(); foreach (var iter in groups) { groupMailings.Add(new GroupMailing() { Group = iter, Mailing = newMailing }); } // creating sending times var sendingTimes = new List <Time>(); foreach (var time in times) { sendingTimes.Add(new Time() { TimeToSend = time, Mailing = newMailing, BeenSent = false, }); } await db.Mailings.AddAsync(newMailing); await db.Times.AddRangeAsync(sendingTimes); await db.GroupMailings.AddRangeAsync(groupMailings); await db.SaveChangesAsync(); return(true); }