Ejemplo n.º 1
0
        /// <summary>
        /// Метод для создания или редактирования точки
        /// </summary>
        /// <param name="isNew">Если True, то новая точка</param>
        private void PointCreateEdit(bool isNew)
        {
            var logString = new StringBuilder();
            var result = new StringResultDto();
            try
            {
                var input = ResponseOperator.ConvertStringToValue<EditPointDto>(Context);
#if DEBUG
                logString.Append(DateTime.Now + " " + "Распарсили объект:\r\n");
                logString.Append(DateTime.Now + " " + input.ToJson().ToString() + "\r\n");
                //ExeptionModel.WriteToLog("Распарсили объект:");
                //ExeptionModel.WriteToLog(input.ToJson().ToString());
#endif
                var userId = input.Auth.Token;
                if (string.IsNullOrEmpty(userId))
                {
                    throw new AuthenticationException("Ошибка авторизации");
                }
                try
                {
                    DbUser user;
                    using (var db = new DatabaseModel())
                    {
                        var id = int.Parse(userId);
                        user = db.UsersSet.FirstOrDefault(x => x.Id == id);
                    }
                    if (user == null)
                    {
                        throw new AuthenticationException("Ошибка авторизации");
                    }
                    //var newPoint = db.PointsSet.Create();
                    //newPoint.Update(input.Point);
                    //user.Points.Add(newPoint);
                    //db.SaveChanges();
                    var poss = new[]
                        {
                            input.Point.PointDataDto.Longitude.ToString(CultureInfo.InvariantCulture),
                            input.Point.PointDataDto.Latitude.ToString(CultureInfo.InvariantCulture)
                        };
                    var a = new Anketa();
                    var text = a.GetResult(input.Point.PointDataDto);
                    text = input.Point.PointDataDto.PointPart7Summary.OtherComments + "\n\n" + text;
#if DEBUG
                    logString.Append(DateTime.Now + " " + "Посчитали коэффициенты" + "\r\n");
                    //ExeptionModel.WriteToLog("Посчитали коэффициенты");
#endif
                    if (!string.IsNullOrEmpty(input.Point.PointDataDto.Address) &&
                        (poss[0] == "0" || poss[1] == "0"))
                    {
#if DEBUG
                        logString.Append(DateTime.Now + " " + "Координаты яндекса" + "\r\n");
                        //ExeptionModel.WriteToLog("Координаты яндекса");
#endif
                        var coor = "http://geocode-maps.yandex.ru/1.x/?format=json&geocode=" +
                                   input.Point.PointDataDto.Address;
                        var requestToYa = (HttpWebRequest) WebRequest.Create(coor);
                        var responseFromYa = (HttpWebResponse) requestToYa.GetResponse();
                        var streamReader = new StreamReader(responseFromYa.GetResponseStream());
                        coor = streamReader.ReadToEnd();
                        var o = JObject.Parse(coor);
                        var pos =
                            (string)
                            o["response"]["GeoObjectCollection"]["featureMember"][0]["GeoObject"]["Point"]["pos"
                                ];
                        poss = pos.Split(' ');
#if DEBUG
                        logString.Append(DateTime.Now + " " + "Яндекс посчитался" + "\r\n");
                        //ExeptionModel.WriteToLog("Яндекс посчитался");
#endif
                    }
                    var response = new StringBuilder("http://www.streetjournal.org/api2/");
                    response.Append(isNew ? "addissue?" : "editissue?");
                    response.Append("user="******"&pswd=" + user.Password);
                    if (!isNew)
                        response.Append("&id=" + input.Point.Id);
                    response.Append("&latitude=" + poss[1] + "&longitude=" + poss[0]);
                    response.Append("&name=" + input.Point.Name);
                    response.Append("&address=" + input.Point.PointDataDto.Address);
                    response.Append("&text=" + text);
                    response.Append("&anonymous=false");
                    response.Append("&categorymain=" + 176 /*input.Point.Category*/);
#warning закоменчена отправка дполнительной категории на АПИ.
                    //response.Append("&categoryadd=" + input.Point.Category);

#if DEBUG
                    logString.Append(DateTime.Now + " " + "Ищем фотографию" + "\r\n");
                    //ExeptionModel.WriteToLog("Ищем фотографию");
#endif
                    if (!string.IsNullOrEmpty(input.Point.PointDataDto.PhotoName))
                    {
                        var pathToServer = AppDomain.CurrentDomain.BaseDirectory;
                        var fileName = String.Format(GlobalContants.FilePathFormat, pathToServer,
                                                     input.Point.PointDataDto.PhotoName);
                        if (File.Exists(fileName))
                        {
#if DEBUG
                            logString.Append(DateTime.Now + " " + "Нашли фотографию" + "\r\n");
                            //ExeptionModel.WriteToLog("Нашли фотографию");
#endif
                            var image = new Bitmap(fileName);
#if DEBUG
                            logString.Append(DateTime.Now + " " + "Ресайз фотографии" + "\r\n");
                            //ExeptionModel.WriteToLog("Ресайз фотографии");
#endif
                            image = ResizePhoto(image);
                            using (var ms = new MemoryStream())
                            {
#if DEBUG
                                logString.Append(DateTime.Now + " " + "Конвертация в Base64" + "\r\n");
                                //ExeptionModel.WriteToLog("Конвертация в Base64");
#endif
                                image.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
                                var imageBytes = ms.ToArray();
                                var photoStr = Convert.ToBase64String(imageBytes);

#warning закоменчена отправка фотографии на АПИ.
                                //response.Append(!string.IsNullOrEmpty(photoStr)
                                //                    ? "&photo=" + photoStr
                                //                    : string.Empty);
                            }
                        }
                    }
#if DEBUG
                    logString.Append(DateTime.Now + " " + "response:" + response + "\r\n");
                    //ExeptionModel.WriteToLog("response:" + response);
#endif
                    var myHttpWebRequest = (HttpWebRequest) WebRequest.Create(response.ToString());
                    var myHttpWebResponse = (HttpWebResponse) myHttpWebRequest.GetResponse();
                    var myStreamReader = new StreamReader(myHttpWebResponse.GetResponseStream());
                    var str = myStreamReader.ReadToEnd();
                    var doc = new XmlDocument();
                    doc.LoadXml(str);
                    if (str.Contains("Fault"))
                    {
                        result.Result = doc.GetElementsByTagName("Fault")[0].FirstChild.Value;
                    }
                    else
                    {
                        result.Result = "Ваша информация занесена на карту";
                        result.ResultObjectId =
                            int.Parse(doc.GetElementsByTagName("Issue")[0].Attributes["Id"].Value);
                    }
                }
                catch (Exception ex)
                {
                    result = new StringResultDto(ex.Message);
                    logString.Append(DateTime.Now + " " + "Token:" + input.Auth.Token + " request:    " + input.ToJson() +
                                     "\r\n");
                    logString.Append(DateTime.Now + " " + "Token:" + input.Auth.Token + "  " + ex.Message + " " +
                                     ex.StackTrace + "\r\n");
                    ExeptionModel.WriteToLog("Token:" + input.Auth.Token + " request:    " + input.ToJson());
                    ExeptionModel.WriteToLog("Token:" + input.Auth.Token + "  " + ex.Message + " " + ex.StackTrace);
                }
            }
            catch (Exception ex)
            {
                result = new StringResultDto(ex.Message);
                logString.Append(DateTime.Now + " " + ex.Message + " " + ex.StackTrace + "\r\n");
                ExeptionModel.WriteToLog(ex.Message + " " + ex.StackTrace);
            }
#if DEBUG
            logString.Append(DateTime.Now + " " + result.ToJson().ToString() + "\r\n");
            ExeptionModel.WriteToLog(logString.ToString());
            //ExeptionModel.WriteToLog(result.ToJson().ToString());
#endif
            ResponseOperator.ConvertValueToString(result, Context);
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Сохранение или получение фотки с сервера сервиса
        /// </summary>
        /// <param name="isSave">True - SavePhoto, False - LoadPhoto</param>
        private void PhotoSaveLoad(bool isSave)
        {
            var result = new StringResultDto();
            try
            {
                var input = ResponseOperator.ConvertStringToValue<PointPhotoDto>(Context);
#if DEBUG
                ExeptionModel.WriteToLog("Распарсили объект:");
                ExeptionModel.WriteToLog(input.ToJson().ToString());
#endif
                var userId = input.Auth.Token;
                if (string.IsNullOrEmpty(userId))
                {
                    throw new AuthenticationException("Ошибка авторизации");
                }
                try
                {
                    using (var db = new DatabaseModel())
                    {
                        var id = int.Parse(userId);
                        var user = db.UsersSet.FirstOrDefault(x => x.Id == id);
                        var pointId = input.Id;
                        if (user == null)
                        {
                            throw new AuthenticationException("Ошибка авторизации");
                        }
                        //var oldPoint = user.Points.FirstOrDefault(p => p.Id == pointId);
                        ////Именно тут, чтобы не удалить чужое

                        //if (oldPoint == null)
                        //{
                        //    result = new StringResultDto("Редактируемая точка не найдена");
                        //}
                        //else
                        //{
                        var photosDir = GetPhotosDir();

                        if (!Directory.Exists(photosDir))
                        {
                            result.Result = "Отсутствует дирректория для фото";
#if DEBUG
                            ExeptionModel.WriteToLog("Отсутствует дирректория для фото");
#endif
                        }
                        else
                        {
                            var fileName = Path.Combine(photosDir, input.Id + ".jpg");
                            if (isSave)
                            {
                                File.WriteAllBytes(fileName, Convert.FromBase64String(input.PhotoBase64));
#if DEBUG
                                ExeptionModel.WriteToLog("Создали фото: " + fileName);
#endif

                            }
                            else
                            {
                                if (File.Exists(fileName))
                                {
                                    result.Result = Convert.ToBase64String(File.ReadAllBytes(fileName));
                                    result.ResultObjectId = pointId;
                                }
                                else
                                {
                                    result.Result = "Фото не найдено";
                                    result.ResultObjectId = 0;
                                }
#if DEBUG
                                ExeptionModel.WriteToLog("Вернули фото: " + fileName);
#endif
                            }
                        }

                        /*oldPoint.Photo = Convert.FromBase64String(input.PhotoBase64);

                            db.SaveChanges();*/
                        //}
                    }
                }
                catch (Exception ex)
                {
                    result = new StringResultDto(ex.Message);
                    ExeptionModel.WriteToLog("Token:" + input.Auth.Token + " request:    " + input.ToJson());
                    ExeptionModel.WriteToLog("Token:" + input.Auth.Token + "  " + ex.Message + " " + ex.StackTrace);
                }
            }
            catch (Exception ex)
            {
                result = new StringResultDto(ex.Message);
                ExeptionModel.WriteToLog(ex.Message + " " + ex.StackTrace);
            }
#if DEBUG
            ExeptionModel.WriteToLog(result.ToJson().ToString());
#endif
            ResponseOperator.ConvertValueToString(result, Context);
        }
Ejemplo n.º 3
0
        public void LoadPhoto()
        {
#if DEBUG
            ExeptionModel.WriteToLog("Зашли в LoadPhoto()");
#endif
            var result = new StringResultDto();
            ResponseOperator.ConvertValueToString(result, Context);
            //PhotoSaveLoad(false);

            //var input = ResponseOperator.ConvertStringToValue<IdDto>(Context);

            //var result = new StringResultDto();

            //int userId = InternalSessionManager.GetUserId(input.Auth.Token);

            //if (userId <= 0)
            //{
            //    result = new StringResultDto("Ошибка авторизации");
            //}
            //else
            //{
            //    try
            //    {
            //        using (var db = new DatabaseModel())
            //        {
            //            DbUser user = db.UsersSet.Find(userId);

            //            int pointId = input.Id;

            //            DbPoint oldPoint = user.Points.FirstOrDefault(p => p.Id == pointId);
            //            //Именно тут, чтобы не удалить чужое

            //            if (oldPoint == null)
            //            {
            //                result = new StringResultDto("Редактируемая точка не найден");
            //            }
            //            else
            //            {
            //                var photosDir = GetPhotosDir();

            //                if (!Directory.Exists(photosDir))
            //                {
            //                    result.Result = "Отсутствует дирректория для фото";
            //                }
            //                else
            //                {
            //                    string fileName = Path.Combine(photosDir, input.Id + ".jpg");

            //                    if (File.Exists(fileName))
            //                        result.Result = Convert.ToBase64String(File.ReadAllBytes(fileName));

            //                    result.ResultObjectId = pointId;
            //                }
            //            }
            //        }
            //    }
            //    catch (Exception ex)
            //    {
            //        result = new StringResultDto(ex.Message);
            //    }
            //}

            //ResponseOperator.ConvertValueToString(result, Context);
        }
Ejemplo n.º 4
0
        public void SavePhoto()
        {
#if DEBUG
            ExeptionModel.WriteToLog("Зашли в SavePhoto()");
#endif
            var result = new StringResultDto();
            ResponseOperator.ConvertValueToString(result, Context);
            //PhotoSaveLoad(true);
        }
Ejemplo n.º 5
0
        public void RemovePoint()
        {
            var input = ResponseOperator.ConvertStringToValue<EditPointDto>(Context);

            var result = new StringResultDto();

            int userId = InternalSessionManager.GetUserId(input.Auth.Token);

            if (userId <= 0)
            {
                result = new StringResultDto("Ошибка авторизации");
            }
            else
            {
                try
                {
                    using (var db = new DatabaseModel())
                    {
                        DbUser user = db.UsersSet.Find(userId);
                        int pointId = input.Point.Id;

                        DbPoint oldPoint = user.Points.FirstOrDefault(p => p.Id == pointId);
                        //Именно тут, чтобы не удалить чужое

                        if (oldPoint == null)
                        {
                            result = new StringResultDto("Редактируемая точка не найден");
                        }
                        else
                        {
                            user.Points.Remove(oldPoint);

                            db.SaveChanges();
                        }
                    }
                }
                catch (Exception ex)
                {
                    result = new StringResultDto(ex.Message);
                }
            }

            ResponseOperator.ConvertValueToString(result, Context);
        }