Exemple #1
0
        async void OnRecordReady(object sender, Stream stream)
        {
            var len = stream.Length;

            var bytes = new byte[len];

            stream.Read(bytes, 0, (int)len);
            var recView = (Recorder)sender;
            var recs    = App.Database.GetItems <Record>();
            var id      = 1;

            if (recs.Any())
            {
                id = recs.Max(x => x.Id) + 1;
            }
            var rec = new Record
            {
                Id          = id,
                Name        = recView.Title.Text,
                Description = recView.Description.Text,
                UserId      = Conf.User.Id,
                Audio       = bytes,
                Point       = recView.Position
            };

            App.Database.SaveItem(rec);

            var httpConnector = new HTTPConector();

            httpConnector.Address = "record";
            httpConnector.Content = ("Record", rec);
            var resp = string.Empty;

            try
            {
                resp = await httpConnector.SendAsync <UserMiniSerializer>();
            }
            catch (Exception ex)
            {
                return;
            }
            if (httpConnector.Response?.StatusCode == System.Net.HttpStatusCode.OK)
            {
                var jobj          = JObject.Parse(resp);
                var jrec          = jobj.GetValue("record");
                var recFromServer = jrec.ToObject <Record>();

                App.Database.DeleteItem <Record>(rec.Id);
                rec.Id = recFromServer.Id;
                App.Database.SaveItem(rec);
            }
        }
        async void OnButtonClicked(object sender, System.EventArgs e)
        {
            Button button = (Button)sender;

            button.IsEnabled = false;
            systeminfo.Text  = (string)HTTPConector.Resources["ServerUriPrefix"] + (string)HTTPConector.Resources["ServerUri"];
            Conf.User.Phone  = Phone.Text.Replace("(", "").Replace(")", "").Replace(" ", "").Replace("-", "");
            var json = new
            {
                Phone     = Conf.User.Phone,
                PublicKey = Conf.CryptoProvider.ToXmlString(false)
            };
            var httpConnector = new HTTPConector(hash: false);

            httpConnector.Address = "user";
            httpConnector.Content = ("User", json);
            var resp = string.Empty;

            try
            {
                resp = await httpConnector.SendAsync <UserMiniSerializer>();
            }
            catch (Exception ex)
            {
                systeminfo.Text = ex.Message;
            }

            if (httpConnector?.Response?.StatusCode == System.Net.HttpStatusCode.OK)
            {
                var newUser = JsonConvert.DeserializeObject <User>(resp);
                var user    = Conf.User;
                user.Token  = newUser.Token;
                user.Id     = newUser.Id;
                user.AuthId = newUser.AuthId;
                newUser     = App.Database.FindUser();
                if (newUser != null)
                {
                    App.Database.DeleteItem <User>(newUser.Id);
                }
                user.IsUser = true;
                App.Database.SaveItem(user);
                Conf.User = user;
                await Navigation.PushAsync(new LoginConfirmPage());
            }
            else
            {
                systeminfo.Text += resp;
                Submit.IsEnabled = true;
            }
        }
Exemple #3
0
        async void OnButtonClicked(object sender, System.EventArgs e)
        {
            Button button = (Button)sender;

            button.IsEnabled = false;

            var httpConnector = new HTTPConector(hash: true);

            httpConnector.Address = "user/confirm";
            httpConnector.Content = ("Code", Code.Text.Replace("-", ""));
            var resp = string.Empty;

            try
            {
                resp = await httpConnector.SendAsync <UserMiniSerializer>();
            }
            catch (Exception ex)
            {
                systeminfo.Text = ex.Message;
            }
            if (httpConnector.Response.StatusCode == System.Net.HttpStatusCode.OK)
            {
                var jobj      = JObject.Parse(resp);
                var isConfirm = jobj.Value <bool>("isConfirmed");
                if (isConfirm)
                {
                    var userExt = jobj.GetValue("user").ToObject <User>();
                    Conf.User.CompanyId   = userExt.CompanyId;
                    Conf.User.Name        = userExt.Name;
                    Conf.User.SecondName  = userExt.SecondName;
                    Conf.User.HourPrice   = userExt.HourPrice;
                    Conf.User.IsConfirmed = true;
                    App.Database.SaveItem(Conf.User);
                    var mp = new MainPage();
                    Navigation.InsertPageBefore(mp, this);
                    await Navigation.PopAsync(true);
                }
                else
                {
                    Info.Text      = "Не верный код";
                    Info.TextColor = Color.Red;
                }
            }
            Submit.IsEnabled = true;
        }
Exemple #4
0
        async Task GetRecordsToTheMap(MapSpan mapRegion)
        {
            {
                //Достаём из БД записи, которые входят в карту и ещё на её не помещались
                var recordsFromDb = App.Database.GetItems <Record>().Where(x =>
                                                                           map.VisibleRegion.IsInclude(x.Point) && !map.Pins.Any(p => (p as PinWithEntity)?.Entity.Id == x.Id));
                FillMap(recordsFromDb);
            }
            var httpConnector = new HTTPConector();

            httpConnector.Address = $"record/get";
            var content = new
            {
                Latitude  = mapRegion.Center.Latitude,
                Longitude = mapRegion.Center.Longitude,
                Radius    = mapRegion.Radius.Meters
            };

            httpConnector.Content = ("MapSpan", content);
            var resp = string.Empty;
            //try
            //{
            //	resp = await httpConnector.SendAsync<UserMiniSerializer>();
            //}
            //catch (Exception ex)
            //{
            //	return;
            //}

            //if (resp != null && (httpConnector.Response?.IsSuccessStatusCode ?? false))
            //{
            //	var op = new JsonSerializerOptions { PropertyNameCaseInsensitive = true };

            //	var recList = System.Text.Json.JsonSerializer.Deserialize<Record[]>(resp, op)
            //		.Where(x => !map.Pins.Any(p => (p as PinWithEntity)?.Entity?.Id == x.Id));

            //	FillMap(recList);
            //	App.Database.SaveItems(recList.ToList());
            //}
            //foreach (var pin in map.Pins.Where(p => !map.VisibleRegion.IsInclude(p.Position)))
            //	map.Pins.Remove(pin);
        }
Exemple #5
0
        public async void RecordSelected(object sender, PositionSelectedEventArgs e)
        {
            var cvc  = sender as CarouselViewControl;
            var item = cvc.ItemsSource.GetItem(e.NewValue) as Record;

            if (item.IsDownloaded)
            {
            }
            else
            {
                var httpConnectorDesc = new HTTPConector();
                httpConnectorDesc.Address = $"record/description";
                var contentDesc = new
                {
                    Id       = item.Id,
                    IsPublic = true
                };
                httpConnectorDesc.Content = ("Record", contentDesc);
                var respDesc = string.Empty;
                try
                {
                    respDesc = await httpConnectorDesc.SendAsync <UserMiniSerializer>();
                }
                catch (Exception ex)
                {
                    return;
                }
                var respRec = JsonSerializer.Deserialize <Record>(respDesc, new JsonSerializerOptions {
                    PropertyNameCaseInsensitive = true
                });
                item.Description  = respRec.Description;
                item.IsDownloaded = true;
            }
            var httpConnector = new HTTPConector();

            httpConnector.Address = $"record/listen";
            var content = new
            {
                Id       = item.Id,
                IsPublic = true
            };

            httpConnector.Content = ("Record", content);
            var resp = string.Empty;

            try
            {
                resp = await httpConnector.SendAsync <UserMiniSerializer>(true);
            }
            catch (Exception ex)
            {
                return;
            }
            //var path = Path.Combine(Android.OS.Environment.ExternalStorageDirectory.AbsolutePath, item.Id.ToString() + ".wav");
            //if (System.IO.File.Exists(path))
            //	System.IO.File.Delete(path);
            //var file = System.IO.File.Create(path);
            //var ar = await httpConnector.Response.Content.ReadAsByteArrayAsync();
            //await file.WriteAsync(ar, 0, ar.Length);
            //file.Close();
            ////file.Seek(0, SeekOrigin.Begin);
            ///
            if (Device.RuntimePlatform == Device.Android)
            {
                var path = Path.Combine(Environment.GetExternalStoragePublicDirectory(Environment.DirectoryMusic).AbsolutePath, "123.wav");
                var f    = new File(path);
                if (f.Exists())
                {
                    f.Delete();
                }
                f.CreateNewFile();
                var fd = new Java.IO.FileWriter(f);
                //{
                var bytes = await httpConnector.Response.Content.ReadAsByteArrayAsync();

                var chars = System.Text.Encoding.ASCII.GetChars(bytes);
                fd.Write(chars, 0, chars.Length);
                //}
                IMediaItem media = new MediaItem();
                await MediaManager.CrossMediaManager.Current.Play(new FileInfo(f.AbsolutePath));



                //MediaPlayer mp = new MediaPlayer();

                //var mp = new MediaPlayer();
                //mp.SetDataSource(f.AbsolutePath);

                //mp.
                //mp.Prepared += (sender, args) =>
                //{
                //	mp.Start();
                //};

                //mp.PrepareAsync();
                //Player.Play();
            }
            else
            {
                Player.Load(await httpConnector.Response.Content.ReadAsStreamAsync());
                Player.Play();
            }
        }