예제 #1
0
        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());
        }
예제 #2
0
        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());
        }
예제 #3
0
        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());
        }
예제 #4
0
        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);
        }