private void Add_Click(object sender, RoutedEventArgs e)
        {
            try
            {
                FineModel fine = new FineModel()
                {
                    IdDriver    = LogicLicense.GetIdDriver(Driver.Text),
                    Sum         = double.Parse(Sum.Text),
                    Description = Description.Text,
                    IdInspector = Logic.SecurityContext.IdUser,
                    FineDate    = DateTime.Today
                };
                LogicFine.SaveFine(fine);
                MessageBox.Show("Новый штраф успешно создан");

                Fine fineList = new Fine();
                fineList.Show();
                this.Close();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }
 public static void SaveFine(FineModel fine)
 {
     DbContext.db.FIne.Add(fine);
     DbContext.db.SaveChanges();
 }
示例#3
0
        public void FineCommand(Client player, string name = "", string surname = "", string amount = "", string reason = "")
        {
            if (name == string.Empty)
            {
                player.SendChatMessage(Constants.COLOR_HELP + Messages.GEN_FINE_COMMAND);
            }
            else if (player.GetData(EntityData.PLAYER_KILLED) != 0)
            {
                player.SendChatMessage(Constants.COLOR_ERROR + Messages.ERR_PLAYER_IS_DEAD);
            }
            else if (player.GetData(EntityData.PLAYER_ON_DUTY) == 0)
            {
                player.SendChatMessage(Constants.COLOR_ERROR + Messages.ERR_PLAYER_NOT_ON_DUTY);
            }
            else if (player.GetData(EntityData.PLAYER_FACTION) != Constants.FACTION_POLICE)
            {
                player.SendChatMessage(Constants.COLOR_ERROR + Messages.ERR_PLAYER_NOT_POLICE_FACTION);
            }
            else
            {
                Client target = null;

                if (int.TryParse(name, out int targetId) == true)
                {
                    target = Globals.GetPlayerById(targetId);
                    reason = amount;
                    amount = surname;
                }
                else
                {
                    target = NAPI.Player.GetPlayerFromName(name + " " + surname);
                }
                if (target != null && target.HasData(EntityData.PLAYER_PLAYING) == true)
                {
                    if (player.Position.DistanceTo(target.Position) > 2.5f)
                    {
                        player.SendChatMessage(Constants.COLOR_ERROR + Messages.ERR_PLAYER_TOO_FAR);
                    }
                    else if (target == player)
                    {
                        player.SendChatMessage(Constants.COLOR_ERROR + Messages.ERR_PLAYER_FINED_HIMSELF);
                    }
                    else
                    {
                        string    playerMessage = string.Format(Messages.INF_FINE_GIVEN, target.Name);
                        string    targetMessage = string.Format(Messages.INF_FINE_RECEIVED, player.Name);
                        FineModel fine          = new FineModel();
                        fine.officer = player.Name;
                        fine.target  = target.Name;
                        fine.amount  = int.Parse(amount);
                        fine.reason  = reason;
                        player.SendChatMessage(Constants.COLOR_INFO + playerMessage);
                        target.SendChatMessage(Constants.COLOR_INFO + targetMessage);

                        Task.Factory.StartNew(() =>
                        {
                            // Insert the fine into the database
                            Database.InsertFine(fine);
                        });
                    }
                }
                else
                {
                    player.SendChatMessage(Constants.COLOR_ERROR + Messages.ERR_PLAYER_NOT_FOUND);
                }
            }
        }
示例#4
0
        public async Task <ActionResult> addUserFine()
        {
            FineModel fineId  = new FineModel();
            FineModel fineBuf = new FineModel();

            fineId.NameFine   = "Пересечение сплошной полосы";
            fineId.AmountFine = 5000;

            UserModel userId  = new UserModel();
            UserModel userBuf = new UserModel();

            userId.FIO     = "Petrov Ivan";
            userId.Adress  = "Moscow Lenina 23";
            userId.Phone   = "89991234567";
            userId.IdFines = 0;

            MachineModel autoId  = new MachineModel();
            MachineModel autoBuf = new MachineModel();

            autoId.Mark        = "Audi";
            autoId.Model       = "Q3";
            autoId.Type        = "Automobile";
            autoId.Year        = 2011;
            autoId.StateNumber = "o444oo77";
            autoId.VIN         = "WWW11S1234567890";
            autoId.IdUsers     = 0;


            try
            {
                using (HttpClient client = new HttpClient())
                {
                    client.BaseAddress = new Uri("http://localhost:50178/");
                    client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
                    HttpResponseMessage res = await client.GetAsync("odata/UserInf?$filter=NameFines eq '" + fineId.NameFine + "'");

                    if (res.IsSuccessStatusCode)
                    {
                        var EmpResponse = res.Content.ReadAsStringAsync().Result;
                        EmpResponse = EmpResponse.Remove(0, EmpResponse.IndexOf('[') + 1);
                        EmpResponse = EmpResponse.Remove(EmpResponse.IndexOf(']'), 2);
                        fineBuf     = Newtonsoft.Json.JsonConvert.DeserializeObject <FineModel>(EmpResponse);
                    }
                }
            }
            catch
            {
                throw new HttpException(400, "Bad Request");
            }

            try
            {
                if (fineBuf == null)
                {
                    using (HttpClient client = new HttpClient())
                    {
                        client.BaseAddress = new Uri("http://localhost:50178/");
                        client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
                        HttpResponseMessage res = await client.PostAsJsonAsync("api/DB", fineId);

                        if (res.IsSuccessStatusCode)
                        {
                            var EmpResponse = res.Content.ReadAsStringAsync().Result;
                            fineId = Newtonsoft.Json.JsonConvert.DeserializeObject <FineModel>(EmpResponse);
                        }
                    }
                }
                else
                {
                    fineId = fineBuf;
                }
            }
            catch
            {
                throw new HttpException(400, "Bad Request");
            }

            userId.IdFines = fineId.Id;

            try
            {
                using (HttpClient client = new HttpClient())
                {
                    client.BaseAddress = new Uri("http://localhost:50133/");
                    client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
                    HttpResponseMessage res = await client.GetAsync("odata/UserInf?$filter=IdFines eq " + userId.IdFines + " and " +
                                                                    "FIO eq '" + userId.FIO + "' and Phone eq '" + userId.Phone + "'");

                    if (res.IsSuccessStatusCode)
                    {
                        var EmpResponse = res.Content.ReadAsStringAsync().Result;
                        EmpResponse = EmpResponse.Remove(0, EmpResponse.IndexOf('[') + 1);
                        EmpResponse = EmpResponse.Remove(EmpResponse.IndexOf(']'), 2);
                        userBuf     = Newtonsoft.Json.JsonConvert.DeserializeObject <UserModel>(EmpResponse);
                    }
                }
            }
            catch
            {
                throw new HttpException(400, "Bad Request");
            }

            try
            {
                if (userBuf == null)
                {
                    using (HttpClient client = new HttpClient())
                    {
                        client.BaseAddress = new Uri("http://localhost:50133/");
                        client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
                        HttpResponseMessage res = await client.PostAsJsonAsync("api/DB", userId);

                        if (res.IsSuccessStatusCode)
                        {
                            var EmpResponse = res.Content.ReadAsStringAsync().Result;
                            userId = Newtonsoft.Json.JsonConvert.DeserializeObject <UserModel>(EmpResponse);
                        }
                    }
                }
                else
                {
                    userId = userBuf;
                }
            }
            catch
            {
                throw new HttpException(400, "Bad Request");
            }

            autoId.IdUsers = userId.Id;

            try
            {
                using (HttpClient test = new HttpClient())
                {
                    test.BaseAddress = new Uri("http://localhost:50078/");
                    test.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
                    HttpResponseMessage res = await test.GetAsync("odata/UserInf?$filter=Mark eq '" + autoId.Mark + "' and " +
                                                                  "Model eq " + autoId.Model + " and Year eq " + autoId.Year + " and StateNumber eq " + autoId.StateNumber);

                    if (res.IsSuccessStatusCode)
                    {
                        var EmpResponse = res.Content.ReadAsStringAsync().Result;
                        EmpResponse = EmpResponse.Remove(0, EmpResponse.IndexOf('[') + 1);
                        EmpResponse = EmpResponse.Remove(EmpResponse.IndexOf(']'), 2);
                        autoBuf     = Newtonsoft.Json.JsonConvert.DeserializeObject <MachineModel>(EmpResponse);
                    }
                }
            }
            catch
            {
                throw new HttpException(400, "Bad Request");
            }

            try
            {
                if (autoBuf == null)
                {
                    using (HttpClient test = new HttpClient())
                    {
                        test.BaseAddress = new Uri("http://localhost:50078/");
                        test.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
                        HttpResponseMessage res = await test.PostAsJsonAsync("api/DB", autoId);

                        if (res.IsSuccessStatusCode)
                        {
                            var EmpResponse = res.Content.ReadAsStringAsync().Result;
                            autoId = Newtonsoft.Json.JsonConvert.DeserializeObject <MachineModel>(EmpResponse);
                        }
                    }
                }
                else
                {
                    autoId = autoBuf;
                }
            }
            catch
            {
                throw new HttpException(400, "Bad Request");
            }
            return(View());
        }
示例#5
0
        public void FineCommand(Client player, string name = "", string surname = "", string amount = "", string reason = "")
        {
            if (name == string.Empty)
            {
                player.SendChatMessage(Constants.COLOR_HELP + Commands.HLP_FINE_COMMAND);
            }
            else if (player.GetData(EntityData.PLAYER_KILLED) != 0)
            {
                player.SendChatMessage(Constants.COLOR_ERROR + ErrRes.player_is_dead);
            }
            else if (player.GetData(EntityData.PLAYER_ON_DUTY) == 0)
            {
                player.SendChatMessage(Constants.COLOR_ERROR + ErrRes.player_not_on_duty);
            }
            else if (player.GetData(EntityData.PLAYER_FACTION) != Constants.FACTION_POLICE)
            {
                player.SendChatMessage(Constants.COLOR_ERROR + ErrRes.player_not_police_faction);
            }
            else
            {
                Client target = null;

                if (int.TryParse(name, out int targetId) == true)
                {
                    target = Globals.GetPlayerById(targetId);
                    reason = amount;
                    amount = surname;
                }
                else
                {
                    target = NAPI.Player.GetPlayerFromName(name + " " + surname);
                }
                if (target != null && target.HasData(EntityData.PLAYER_PLAYING) == true)
                {
                    if (player.Position.DistanceTo(target.Position) > 2.5f)
                    {
                        player.SendChatMessage(Constants.COLOR_ERROR + ErrRes.player_too_far);
                    }
                    else if (target == player)
                    {
                        player.SendChatMessage(Constants.COLOR_ERROR + ErrRes.player_fined_himself);
                    }
                    else
                    {
                        FineModel fine = new FineModel();
                        {
                            fine.officer = player.Name;
                            fine.target  = target.Name;
                            fine.amount  = int.Parse(amount);
                            fine.reason  = reason;
                        }

                        string playerMessage = string.Format(InfoRes.fine_given, target.Name);
                        string targetMessage = string.Format(InfoRes.fine_received, player.Name);
                        player.SendChatMessage(Constants.COLOR_INFO + playerMessage);
                        target.SendChatMessage(Constants.COLOR_INFO + targetMessage);

                        Task.Factory.StartNew(() =>
                        {
                            // Insert the fine into the database
                            Database.InsertFine(fine);
                        });
                    }
                }
                else
                {
                    player.SendChatMessage(Constants.COLOR_ERROR + ErrRes.player_not_found);
                }
            }
        }
示例#6
0
        public IHttpActionResult Get(SearchCriteria searchCriteria, string searchValue, bool includeAccount, bool onlyImageEvidence, bool onlyPayable)
        {
            var models = new List <FineModel>();

            if (string.IsNullOrWhiteSpace(searchValue))
            {
                return(Ok(models));
            }

            var isWildCardSearch = searchValue.Contains("%");

            searchValue = searchValue.Replace("%", string.Empty);

            using (var dbContext = new DataContext())
            {
                //dbContext.Database.Log = f => Debug.WriteLine(f);

                var query = dbContext.OffenceRegister
                            .AsNoTracking()
                            .Include(f => f.Register)
                            .Include(f => f.Register.District)
                            .Include(f => f.Register.ReferenceVehicle)
                            .Include(f => f.Court)
                            .Include(f => f.Register.Person)
                            .Include(f => f.Register.Person.AddressInfos)
                            .Include(f => f.InfringementLocation)
                            .Include(f => f.EvidenceLog)
                            .Include(f => f.EvidenceLog.SpeedLog)
                            .Include(f => f.EvidenceLog.ChargeInfos)
                            .Include(f => f.Credential.User)
                            .Include(f => f.EvidenceLog.HandWrittenCaptureLog);

                //var offences = query.OrderByDescending(f => f.InfringementDate).ToList();

                if (searchCriteria == SearchCriteria.IDNumber)
                {
                    query = isWildCardSearch ? query.Where(f => f.Register.Person.IDNumber.Contains(searchValue)) : query.Where(f => f.Register.Person.IDNumber == searchValue);
                }
                else if (searchCriteria == SearchCriteria.ReferenceNumber)
                {
                    query = isWildCardSearch ? query.Where(f => f.ReferenceNumber.Contains(searchValue)) : query.Where(f => f.ReferenceNumber == searchValue);
                }
                else if (searchCriteria == SearchCriteria.VLN)
                {
                    query = isWildCardSearch ? query.Where(f => f.VLN.Contains(searchValue)) : query.Where(f => f.VLN == searchValue);
                }
                else if (searchCriteria == SearchCriteria.TransactionToken)
                {
                    var generatedReferenceNumber = dbContext.GeneratedReferenceNumbers.AsNoTracking().FirstOrDefault(f => f.ExternalToken == searchValue);
                    if (generatedReferenceNumber == null)
                    {
                        return(Ok(new List <FineModel>()));
                    }

                    query = query.Where(f => f.ReferenceNumber == generatedReferenceNumber.ReferenceNumber);
                }
                else
                {
                    return(Ok(new List <FineModel>()));
                }

                if (onlyPayable)
                {
                    query = query.Where(f => f.Register.RegisterStatus < 3000);
                }

                var offences = query.OrderByDescending(f => f.InfringementDate).ToList();

                foreach (var offence in offences)
                {
                    var transactionToken         = string.Empty;
                    var generatedReferenceNumber = dbContext.GeneratedReferenceNumbers.FirstOrDefault(f => f.ReferenceNumber == offence.ReferenceNumber);
                    if (generatedReferenceNumber != null)
                    {
                        transactionToken = generatedReferenceNumber.ExternalToken;
                    }

                    AddressInfo addressInfo = null;
                    if (offence.Register.Person != null && offence.Register.Person.AddressInfos.Count > 0)
                    {
                        addressInfo = offence.Register.Person.AddressInfos.FirstOrDefault(f => f.AddressTypeID == Core.Data.Enums.AddressType.Phyiscal);
                    }

                    var model = new FineModel();
                    model.ReferenceNumber       = offence.ReferenceNumber;
                    model.TransactionToken      = transactionToken;
                    model.DistrictID            = offence.DistrictID;
                    model.DistrictName          = offence.Register.District == null ? string.Empty : offence.Register.District.BranchName;
                    model.PaymentOptions        = offence.Register.District == null ? string.Empty : offence.Register.District.PaymentOptions;
                    model.CourtID               = offence.CourtID;
                    model.CourtName             = offence.Court == null ? string.Empty : offence.Court.CourtName;
                    model.CourtDate             = offence.CourtDate;
                    model.OffenderIDType        = offence.Register.Person == null ? 0 : offence.Register.Person.IDNumberType;
                    model.OffenderIDNumber      = offence.Register.Person == null ? string.Empty : offence.Register.Person.IDNumber;
                    model.OffenderLastName      = offence.Register.Person == null ? string.Empty : offence.Register.Person.LastName;
                    model.OffenderFirstName     = offence.Register.Person == null ? string.Empty : offence.Register.Person.FirstNames;
                    model.OffenderEmail         = offence.Register.Person == null ? string.Empty : offence.Register.Person.Email;
                    model.OffenderMobileNumber  = offence.Register.Person == null ? string.Empty : offence.Register.Person.MobileNumber;
                    model.OffenderAddressLine1  = addressInfo == null ? string.Empty : addressInfo.Line1;
                    model.OffenderAddressLine2  = addressInfo == null ? string.Empty : addressInfo.Line2;
                    model.OffenderAddressSuburb = addressInfo == null ? string.Empty : addressInfo.Suburb;
                    model.OffenderAddressTown   = addressInfo == null ? string.Empty : addressInfo.Town;
                    model.OfficerCredentialID   = offence.CredentialID;
                    model.OfficerFirstName      = offence.Credential.User.FirstName;
                    model.OfficerLastName       = offence.Credential.User.LastName;
                    model.ExternalID            = offence.Credential.User.ExternalID;
                    model.FirstPrintDate        = offence.FirstPrintDate;
                    model.VLN               = offence.VLN;
                    model.OffenceLocation   = offence.InfringementLocation == null ? string.Empty : offence.InfringementLocation.Description;
                    model.OffenceAmount     = offence.CapturedAmount;
                    model.OffenceDate       = offence.InfringementDate;
                    model.OutstandingAmount = offence.Register.OutstandingAmount;
                    model.Status            = (RegisterStatus)offence.Register.RegisterStatus;

                    if (offence.Register.ReferenceVehicle != null)
                    {
                        model.VehicleMake  = offence.Register.ReferenceVehicle.MakeDescription;
                        model.VehicleModel = offence.Register.ReferenceVehicle.ModelDescription;
                    }

                    if ("NO ID AVAILABLE".Equals(model.OffenderIDNumber, StringComparison.InvariantCultureIgnoreCase))
                    {
                        model.OffenderIDNumber     = string.Empty;
                        model.OffenderLastName     = string.Empty;
                        model.OffenderFirstName    = string.Empty;
                        model.OffenderEmail        = string.Empty;
                        model.OffenderMobileNumber = string.Empty;
                    }

                    if (offence.EvidenceLog != null)
                    {
                        if (offence.EvidenceLog.InfringementType == Core.Data.Enums.InfringementType.Speed && offence.EvidenceLog.SpeedLog != null)
                        {
                            model.OffenceSpeed = offence.EvidenceLog.SpeedLog.Speed;
                            model.SpeedLimit   = offence.EvidenceLog.SpeedLog.Zone;
                        }

                        if (offence.EvidenceLog.ChargeInfos != null)
                        {
                            model.FineChargeModels =
                                offence.EvidenceLog.ChargeInfos.Select(f =>
                                                                       new FineChargeModel
                            {
                                Code                  = f.OffenceCode.Code,
                                Description           = f.PrimaryDescription,
                                SecondaryDescription  = f.SecondaryDescription,
                                ShortDescription      = f.ShortDescription,
                                FineAmount            = f.OffenceCode.FineAmount,
                                RegulationDescription = f.RegulationDescription
                            })
                                .ToList();
                        }

                        if (offence.EvidenceLog.InfringementEvidences != null)
                        {
                            if (onlyImageEvidence)
                            {
                                model.FineEvidenceModels = offence.EvidenceLog.InfringementEvidences
                                                           .Where(f =>
                                                                  f.EvidenceType != Core.Data.Enums.EvidenceType.VoiceRecording &&
                                                                  f.EvidenceType != Core.Data.Enums.EvidenceType.Other &&
                                                                  !f.FileName.Contains(".sml"))
                                                           .Select(f =>
                                                                   new FineEvidenceModel
                                {
                                    ID = f.ID,
                                    ReferenceNumber = model.ReferenceNumber,
                                    EvidenceType    = (EvidenceType)f.EvidenceType,
                                    MimeType        = f.MimeType
                                })
                                                           .ToList();
                            }
                            else
                            {
                                model.FineEvidenceModels = offence.EvidenceLog.InfringementEvidences
                                                           .Where(f => !f.FileName.Contains(".sml"))
                                                           .Select(f =>
                                                                   new FineEvidenceModel
                                {
                                    ID = f.ID,
                                    ReferenceNumber = model.ReferenceNumber,
                                    EvidenceType    = (EvidenceType)f.EvidenceType,
                                    MimeType        = f.MimeType
                                })
                                                           .ToList();
                            }
                        }
                    }

                    if (offence.EvidenceLog.HandWrittenCaptureLog != null)
                    {
                        model.OffenceSpeed = offence.EvidenceLog.HandWrittenCaptureLog.Speed;
                        var chargeWithZone = offence.EvidenceLog.ChargeInfos.FirstOrDefault(f => f.OffenceCode != null && f.OffenceCode.Zone.HasValue && f.OffenceCode.Zone.Value > 0);
                        if (chargeWithZone != null)
                        {
                            model.SpeedLimit = chargeWithZone.OffenceCode.Zone;
                        }

                        model.OffenceLocation = offence.EvidenceLog.HandWrittenCaptureLog.OffenceLocationStreet;
                        if (!string.IsNullOrWhiteSpace(offence.EvidenceLog.HandWrittenCaptureLog.OffenceLocationSuburb))
                        {
                            model.OffenceLocation += string.Format("\n{0}", offence.EvidenceLog.HandWrittenCaptureLog.OffenceLocationSuburb);
                        }
                        if (!string.IsNullOrWhiteSpace(offence.EvidenceLog.HandWrittenCaptureLog.OffenceLocationTown))
                        {
                            model.OffenceLocation += string.Format("\n{0}", offence.EvidenceLog.HandWrittenCaptureLog.OffenceLocationTown);
                        }
                    }

                    if (includeAccount)
                    {
                        var accountTransactions = dbContext.AccountTransactions
                                                  .AsNoTracking()
                                                  .Where(f => f.AccountID == offence.Register.AccountID &&
                                                         f.ReferenceNumber == offence.ReferenceNumber)
                                                  .OrderBy(f => f.CreatedTimestamp)
                                                  .ToList();

                        model.AccountTransactionModels = accountTransactions.Select(f =>
                                                                                    new AccountTransactionModel
                        {
                            CreatedTimestamp = f.CreatedTimestamp,
                            Description      = f.Description,
                            Amount           = f.Amount
                        }).ToList();
                    }

                    models.Add(model);
                }

                return(Ok(models));
            }
        }