public ActionResult MakeDecision(CriminalItemViewModel model) { var violation = violationRepo.Get(model.Id); if (violation == null || violation.ViewingPoliceman == null || violation.Status != CurrentStatus.Started) { return(BadRequest()); } violation.OffenseType = model.OffenseType; violation.Status = CurrentStatus.Accepted; violation.PolicemanCommentary = model.PolicemanCommentary; violation.ConfirmDate = DateTime.Today; if (model.OffenseType == TypeOfOffense.Administrative) { if (model.Penalty == null) { return(BadRequest()); } violation.Penalty = model.Penalty; violation.TermOfPunishment = null; } else { if (model.TermOfPunishment == null) { return(BadRequest()); } violation.TermOfPunishment = model.TermOfPunishment; violation.Penalty = null; } violationRepo.Save(violation); var notifications = PoliceNotificationsFactory.AcceptedViolation(violation.BlamedUser, violation.BlamingUser); notificationsRepository.SaveRange(notifications); return(Ok()); }
public ActionResult DenyViolation(ConfirmTakeViolationViewModel model) { var violation = violationRepo.Get(model.Id); if (violation == null || violation.Status != CurrentStatus.Started) { return(BadRequest()); } violation.Status = CurrentStatus.Denied; violation.PolicemanCommentary = model.PolicemanCommentary; violation.ConfirmDate = DateTime.Today; violationRepo.Save(violation); var notifications = PoliceNotificationsFactory.DenyViolation(violation.BlamedUser, violation.BlamingUser); notificationsRepository.SaveRange(notifications); return(Ok()); }
public ActionResult TakeViolationCase(ConfirmTakeViolationViewModel model) { var item = violationRepo.Get(model.Id); var policeman = policeRepository.GetPolicemanByLogin(model.PolicemanLogin); if (item == null || (model.TakeViolation && item.ViewingPoliceman != null) || (!model.TakeViolation && item.ViewingPoliceman != policeman)) { return(BadRequest()); } if (item.BlamedUser.Login == model.PolicemanLogin || item.BlamingUser.Login == model.PolicemanLogin) { return(BadRequest()); } PoliceNotification notification; if (model.TakeViolation) { item.ViewingPoliceman = policeman; item.Status = CurrentStatus.Started; notification = PoliceNotificationsFactory.OfficerTookViolation(item.BlamingUser); } else { item.ViewingPoliceman = null; item.Status = CurrentStatus.NotStarted; notification = PoliceNotificationsFactory.OfficerDeniedFromViolation(item.BlamingUser); } violationRepo.Save(item); notificationsRepository.Save(notification); return(Ok()); }
public bool AddViolation(Violation item, string blamingUserLogin, string blamedUserLogin) { if (blamedUserLogin == blamingUserLogin) { return(false); } item.BlamingUser = context.CitizenUser.SingleOrDefault(u => u.Login == blamingUserLogin); item.BlamedUser = context.CitizenUser.SingleOrDefault(u => u.Login == blamedUserLogin); if (item.BlamingUser == null || item.BlamedUser == null) { return(false); } item.Status = CurrentStatus.NotStarted; dbSet.Add(item); var notifications = PoliceNotificationsFactory.AddViolation(item.BlamedUser, item.BlamingUser); context.AddRange(notifications); context.SaveChanges(); return(true); }