public async Task <IActionResult> AnswerQuestion(string answerId, int score)
        {
            var model = new EscolaDeVoce.Services.ViewModel.UserAnswerQuestionViewModel();

            model.userId    = Guid.Parse(getClaimValue("Id"));
            model.answearId = Guid.Parse(answerId);
            model.score     = score;

            Infrastructure.ApiResponse <bool> mensagemresponse = null;
            System.Net.Http.HttpMethod        method           = System.Net.Http.HttpMethod.Post;
            mensagemresponse = await ApiRequestHelper.postPutRequest <Infrastructure.ApiResponse <bool> >(
                Helpers.EscolaDeVoceEndpoints.User.answerQuestion,
                method,
                JsonConvert.SerializeObject(model)
                );

            if (mensagemresponse != null)
            {
                return(Json(new {
                    success = true
                }));
            }

            return(Json(new {
                success = false
            }));
        }
        public async Task <IActionResult> SaveComment(string id, string comment)
        {
            var model = new EscolaDeVoce.Services.ViewModel.CommentEscoleteTalkViewModel();

            model.Id      = Guid.Parse(id);
            model.comment = comment;
            model.userId  = Guid.Parse(getClaimValue("Id"));

            Infrastructure.ApiResponse <bool> commentresponse = null;
            System.Net.Http.HttpMethod        method          = System.Net.Http.HttpMethod.Post;
            commentresponse = await ApiRequestHelper.postPutRequest <Infrastructure.ApiResponse <bool> >(
                Helpers.EscolaDeVoceEndpoints.EscoleTalk.comment,
                method,
                JsonConvert.SerializeObject(model)
                );

            if (commentresponse != null)
            {
                return(Json(new {
                    success = true
                }));
            }

            return(Json(new {
                success = false
            }));
            // return View();
        }
        public async Task <IActionResult> AddToFavorite(string videoId)
        {
            var model = new EscolaDeVoce.Services.ViewModel.AddVideoToFavoriteViewModel();

            model.userId  = Guid.Parse(getClaimValue("Id"));
            model.videoId = Guid.Parse(videoId);

            Infrastructure.ApiResponse <bool> favoriteresponse = null;
            System.Net.Http.HttpMethod        method           = System.Net.Http.HttpMethod.Post;
            favoriteresponse = await ApiRequestHelper.postPutRequest <Infrastructure.ApiResponse <bool> >(
                Helpers.EscolaDeVoceEndpoints.Videos.addToFavorites,
                method,
                JsonConvert.SerializeObject(model)
                );

            if (favoriteresponse != null)
            {
                return(Json(new {
                    success = true
                }));
            }

            return(Json(new {
                success = false
            }));
        }
        public Infrastructure.ApiResponse <bool> MakeEmbaixadora(string id)
        {
            var response = new Infrastructure.ApiResponse <bool>();

            try{
                Guid personid = Guid.Empty;
                if (!Guid.TryParse(id, out personid))
                {
                    return(Infrastructure.ApiResponse <bool> .CreateResponse(false, "Curso não encontrado", false, System.Net.HttpStatusCode.NotFound));
                }

                bool std = _personService.MakeEmbaixadora(new Services.Message.MakeEmbaixadoraRequest()
                {
                    personId = personid
                }).status;

                response.status = true;
                response.data   = std;
                response.code   = System.Net.HttpStatusCode.Created;
            }catch (Infrastructure.BusinessRuleException bex) {
                response.status        = true;
                response.code          = System.Net.HttpStatusCode.BadRequest;
                response.brokenRules   = bex.BrokenRules;
                response.error_message = bex.Message;
            }catch (Exception ex) {
                response.status        = true;
                response.code          = System.Net.HttpStatusCode.InternalServerError;
                response.error_message = "Ocorreu um erro inesperado. Entre em contato com o nosso time de desenvolvimento.";
            }

            return(response);
        }
Beispiel #5
0
        public Infrastructure.ApiResponse <bool> saveProfileImage([FromBody] Services.ViewModel.UpdateUserImageViewModel model)
        {
            var response = new Infrastructure.ApiResponse <bool>();

            try{
                var req = new Services.Message.ChangeUserProfileImageRequest();
                req.user = model;

                _userService.ChangeUserProfileImage(req);

                response.status = true;

                response.data = response.status;
                response.code = System.Net.HttpStatusCode.Created;
            }catch (Infrastructure.BusinessRuleException bex) {
                response.status        = true;
                response.code          = System.Net.HttpStatusCode.BadRequest;
                response.brokenRules   = bex.BrokenRules;
                response.error_message = bex.Message;
            }catch (Exception ex) {
                response.status        = true;
                response.code          = System.Net.HttpStatusCode.InternalServerError;
                response.error_message = "Ocorreu um erro inesperado. Entre em contato com o nosso time de desenvolvimento.";
            }
            return(response);
        }
Beispiel #6
0
        public Infrastructure.ApiResponse <bool> AddUserCourse(Guid userid, Guid courseid)
        {
            var response = new Infrastructure.ApiResponse <bool>();

            try{
                var req = new Services.Message.AddUserCourseRequest();
                req.courseId = courseid;
                req.userId   = userid;

                _userService.AddUserCourse(req);

                response.status = true;
                response.data   = true;
                response.code   = System.Net.HttpStatusCode.Created;
            }catch (Infrastructure.BusinessRuleException bex) {
                response.status        = true;
                response.code          = System.Net.HttpStatusCode.BadRequest;
                response.brokenRules   = bex.BrokenRules;
                response.error_message = bex.Message;
            }catch (Exception ex) {
                response.status        = true;
                response.code          = System.Net.HttpStatusCode.InternalServerError;
                response.error_message = "Ocorreu um erro inesperado. Entre em contato com o nosso time de desenvolvimento.";
            }
            return(response);
        }
Beispiel #7
0
        public async Task <IActionResult> sendMessage(string message, string to)
        {
            var model = new EscolaDeVoce.Services.ViewModel.MessageViewModel();

            model.fromId  = Guid.Parse(getClaimValue("Id"));
            model.message = message;
            model.toId    = Guid.Parse(to);
            model.title   = message;

            Infrastructure.ApiResponse <bool> mensagemresponse = null;
            System.Net.Http.HttpMethod        method           = System.Net.Http.HttpMethod.Post;
            mensagemresponse = await ApiRequestHelper.postPutRequest <Infrastructure.ApiResponse <bool> >(
                Helpers.EscolaDeVoceEndpoints.Message.get,
                method,
                JsonConvert.SerializeObject(model)
                );

            if (mensagemresponse != null)
            {
                return(Json(new {
                    success = true
                }));
            }

            return(Json(new {
                success = false
            }));
            // return View();
        }
Beispiel #8
0
        public Infrastructure.ApiResponse <bool> PostComment([FromBody] Services.ViewModel.CommentEscoleteTalkViewModel model)
        {
            var response = new Infrastructure.ApiResponse <bool>();

            try{
                var req = new Services.Message.CommentEscoleteTalkRequest();
                req.escoleteTalk = model;

                _escoleteTalkService.CommentEscoleteTalk(req);

                response.status = true;
                //response.data = model;
                response.code = System.Net.HttpStatusCode.Created;
            }catch (Infrastructure.BusinessRuleException bex) {
                response.status        = true;
                response.code          = System.Net.HttpStatusCode.BadRequest;
                response.brokenRules   = bex.BrokenRules;
                response.error_message = bex.Message;
            }catch (Exception ex) {
                response.status        = true;
                response.code          = System.Net.HttpStatusCode.InternalServerError;
                response.error_message = "Ocorreu um erro inesperado. Entre em contato com o nosso time de desenvolvimento.";
            }
            return(response);
        }
Beispiel #9
0
        public Infrastructure.ApiResponse <Services.ViewModel.EscoleteTalkViewModel> Delete(string id)
        {
            var response = new Infrastructure.ApiResponse <Services.ViewModel.EscoleteTalkViewModel>();

            try{
                Guid escoleteTalkId = Guid.Empty;
                if (!Guid.TryParse(id, out escoleteTalkId))
                {
                    return(Infrastructure.ApiResponse <Services.ViewModel.EscoleteTalkViewModel> .CreateResponse(false, "Categoria não encontrada", null, System.Net.HttpStatusCode.NotFound));
                }

                _escoleteTalkService.RemoveEscoleteTalk(new Services.Message.DeleteEscoleteTalkRequest()
                {
                    escoleteTalkId = escoleteTalkId
                });

                response.status = true;
                response.data   = null;
                response.code   = System.Net.HttpStatusCode.Created;
            }catch (Infrastructure.BusinessRuleException bex) {
                response.status        = true;
                response.code          = System.Net.HttpStatusCode.BadRequest;
                response.brokenRules   = bex.BrokenRules;
                response.error_message = bex.Message;
            }catch (Exception ex) {
                response.status        = true;
                response.code          = System.Net.HttpStatusCode.InternalServerError;
                response.error_message = "Ocorreu um erro inesperado. Entre em contato com o nosso time de desenvolvimento.";
            }

            return(response);
        }
        public Infrastructure.ApiResponse <bool> AddToFavorites([FromBody] Services.ViewModel.AddVideoToFavoriteViewModel model)
        {
            var response = new Infrastructure.ApiResponse <bool>();

            try
            {
                var req = new Services.Message.AddVideoToFavoritesRequest();
                req.model = model;

                _videoService.AddVideoToFavoritesCourse(req);

                response.status = true;
                response.data   = true;
                response.code   = System.Net.HttpStatusCode.Created;
            }
            catch (Infrastructure.BusinessRuleException bex)
            {
                response.status        = true;
                response.code          = System.Net.HttpStatusCode.BadRequest;
                response.brokenRules   = bex.BrokenRules;
                response.error_message = bex.Message;
            }
            catch (Exception ex)
            {
                response.status        = true;
                response.code          = System.Net.HttpStatusCode.InternalServerError;
                response.error_message = "Ocorreu um erro inesperado. Entre em contato com o nosso time de desenvolvimento.";
            }
            return(response);
        }
Beispiel #11
0
        public Infrastructure.ApiResponse <Services.ViewModel.AnswerViewModel> Put(string id, [FromBody] Services.ViewModel.AnswerViewModel model)
        {
            var response = new Infrastructure.ApiResponse <Services.ViewModel.AnswerViewModel>();

            try{
                Guid answerid = Guid.Empty;
                if (!Guid.TryParse(id, out answerid))
                {
                    return(Infrastructure.ApiResponse <Services.ViewModel.AnswerViewModel> .CreateResponse(false, "Categoria não encontrada", null, System.Net.HttpStatusCode.NotFound));
                }

                model.Id = answerid;
                _answerService.UpdateAnswear(new Services.Message.UpdateAnswearRequest()
                {
                    answear = model
                });

                response.status = true;
                response.data   = model;
                response.code   = System.Net.HttpStatusCode.Created;
            }catch (Infrastructure.BusinessRuleException bex) {
                response.status        = true;
                response.code          = System.Net.HttpStatusCode.BadRequest;
                response.brokenRules   = bex.BrokenRules;
                response.error_message = bex.Message;
            }catch (Exception ex) {
                response.status        = true;
                response.code          = System.Net.HttpStatusCode.InternalServerError;
                response.error_message = "Ocorreu um erro inesperado. Entre em contato com o nosso time de desenvolvimento.";
            }

            return(response);
        }
Beispiel #12
0
        public Infrastructure.ApiResponse <Services.ViewModel.UserViewModel> Post([FromBody] Services.ViewModel.CreateUserViewModel model)
        {
            var response = new Infrastructure.ApiResponse <Services.ViewModel.UserViewModel>();

            try{
                var req = new Services.Message.AddUserRequest();
                req.model = model;

                _userService.AddUser(req);

                response.status = true;

                Services.ViewModel.UserViewModel u = new Services.ViewModel.UserViewModel();
                u.username = model.username;

                response.data = u;
                response.code = System.Net.HttpStatusCode.Created;
            }catch (Infrastructure.BusinessRuleException bex) {
                response.status        = true;
                response.code          = System.Net.HttpStatusCode.BadRequest;
                response.brokenRules   = bex.BrokenRules;
                response.error_message = bex.Message;
            }catch (Exception ex) {
                response.status        = true;
                response.code          = System.Net.HttpStatusCode.InternalServerError;
                response.error_message = "Ocorreu um erro inesperado. Entre em contato com o nosso time de desenvolvimento.";
            }
            return(response);
        }
        private Infrastructure.ApiResponse <T> CreateResponse <T>(bool status, string message, T data, System.Net.HttpStatusCode code = System.Net.HttpStatusCode.Created, List <Infrastructure.BusinessRule> rules = null)
        {
            var response = new Infrastructure.ApiResponse <T>();

            response.status        = status;
            response.error_message = message;
            response.data          = data;
            response.brokenRules   = rules;
            response.code          = code;
            return(response);
        }
        public async Task <IActionResult> startCourse(string courseId)
        {
            Infrastructure.ApiResponse <bool> courseResponse = null;
            System.Net.Http.HttpMethod        method         = System.Net.Http.HttpMethod.Post;
            courseResponse = await ApiRequestHelper.postPutRequest <Infrastructure.ApiResponse <bool> >(
                Helpers.EscolaDeVoceEndpoints.User.startCourse + "/" + getClaimValue("Id") + "/" + courseId,
                method
                );

            return(Json(new { success = true }));
        }
Beispiel #15
0
        public async Task <IActionResult> UpdateAccount([Bind("Id,name,lastname,cpf,haveBusiness,children,genre,birthday,phonenumber,email,addressTitle,addressStreet,addressPostalcode,addressCity,addressState,addressNumber,addressNeighborhood")] Services.ViewModel.PersonViewModel model)
        {
            Infrastructure.ApiResponse <bool> favoriteresponse = null;
            System.Net.Http.HttpMethod        method           = System.Net.Http.HttpMethod.Put;
            favoriteresponse = await ApiRequestHelper.postPutRequest <Infrastructure.ApiResponse <bool> >(
                Helpers.EscolaDeVoceEndpoints.Person.get + "/" + model.Id,
                method,
                JsonConvert.SerializeObject(model)
                );

            return(Json(new {}));
        }
        public async Task <IActionResult> updateVideoStatus([Bind("progress,videoId")] Services.ViewModel.UpdateVideoStatusViewModel model)
        {
            Infrastructure.ApiResponse <bool> favoriteresponse = null;
            model.userId = Guid.Parse(getClaimValue("Id"));
            System.Net.Http.HttpMethod method = System.Net.Http.HttpMethod.Post;
            favoriteresponse = await ApiRequestHelper.postPutRequest <Infrastructure.ApiResponse <bool> >(
                Helpers.EscolaDeVoceEndpoints.Videos.updateStatus,
                method,
                JsonConvert.SerializeObject(model)
                );

            return(View());
        }
        public async Task <IActionResult> AddDictionaryItem([Bind("title,content,dictionaryType")] Services.ViewModel.DictionaryViewModel model)
        {
            Infrastructure.ApiResponse <bool> favoriteresponse = null;
            model.userId = Guid.Parse(getClaimValue("Id"));
            System.Net.Http.HttpMethod method = System.Net.Http.HttpMethod.Post;
            favoriteresponse = await ApiRequestHelper.postPutRequest <Infrastructure.ApiResponse <bool> >(
                Helpers.EscolaDeVoceEndpoints.Dictionary.get,
                method,
                JsonConvert.SerializeObject(model)
                );

            return(View());
        }
Beispiel #18
0
        public async Task <IActionResult> CoverPhotoUpload(string image)
        {
            var    webRoot   = _env.WebRootPath;
            var    imagename = Guid.NewGuid().ToString() + ".jpg";
            string filePath  = webRoot + "/images/" + imagename;
            var    baseImage = image.Replace("data:image/png;base64,", "");

            baseImage = baseImage.Replace("data:image/jpeg;base64,", "");
            baseImage = baseImage.Replace("data:image/jpg;base64,", "");
            baseImage = baseImage.Replace("\"", "");
            System.IO.File.WriteAllBytes(filePath, Convert.FromBase64String(baseImage));

            var userimage = new EscolaDeVoce.Services.ViewModel.UpdateUserCoverViewModel();

            userimage.Id    = Guid.Parse(getClaimValue("Id"));
            userimage.image = imagename;

            Infrastructure.ApiResponse <bool> updateimageresponse = null;
            System.Net.Http.HttpMethod        method = System.Net.Http.HttpMethod.Post;
            updateimageresponse = await ApiRequestHelper.postPutRequest <Infrastructure.ApiResponse <bool> >(
                Helpers.EscolaDeVoceEndpoints.User.changeCover,
                method,
                JsonConvert.SerializeObject(userimage)
                );

            if (updateimageresponse != null)
            {
                updateClaimValue("cover", imagename);
                return(Json(new {
                    success = true,
                    imageName = imagename,
                    imagepath = Request.Path
                }));
            }

            return(Json(new {
                success = false
            }));
        }
Beispiel #19
0
        public async Task <IActionResult> Detail([Bind("Id,name")] Services.ViewModel.CategoryViewModel model)
        {
            Infrastructure.ApiResponse <EscolaDeVoce.Services.ViewModel.CategoryViewModel> response = null;

            System.Net.Http.HttpMethod method = System.Net.Http.HttpMethod.Post;
            var url = Helpers.EscolaDeVoceEndpoints.Category.getCategories;

            if (model.Id != Guid.Empty)
            {
                method = System.Net.Http.HttpMethod.Put;
                url    = Helpers.EscolaDeVoceEndpoints.Category.getCategories + "/" + model.Id.ToString();
            }


            response = await ApiRequestHelper.postPutRequest <Infrastructure.ApiResponse <EscolaDeVoce.Services.ViewModel.CategoryViewModel> >(
                url,
                method,
                JsonConvert.SerializeObject(model)
                );

            if (model.Id != Guid.Empty || (response.data != null && response.data.Id != Guid.Empty))
            {
                var Id = model.Id != Guid.Empty ? model.Id : response.data.Id;
                return(RedirectToAction("Detail", new { id = Id.ToString() }));
            }
            return(RedirectToAction("Index"));
        }
Beispiel #20
0
        public async Task <IActionResult> Signup(string username, string password, string email, string name, string lastname, string image, string cover, bool isFacebook)
        {
            var model = new EscolaDeVoce.Services.ViewModel.CreateUserViewModel();

            model.password = password;
            model.username = email;

            model.person          = new EscolaDeVoce.Services.ViewModel.PersonViewModel();
            model.person.name     = name;
            model.person.lastname = lastname;
            model.image           = image;
            model.cover           = cover;

            Infrastructure.ApiResponse <EscolaDeVoce.Services.ViewModel.UserViewModel> createuserresponse = null;
            System.Net.Http.HttpMethod method = System.Net.Http.HttpMethod.Post;
            createuserresponse = await ApiRequestHelper.postPutRequest <Infrastructure.ApiResponse <EscolaDeVoce.Services.ViewModel.UserViewModel> >(
                Helpers.EscolaDeVoceEndpoints.User.create,
                method,
                JsonConvert.SerializeObject(model)
                );

            if (createuserresponse != null)
            {
                return(await this.Login(username, password, isFacebook));
            }

            return(Json(new {
                status = false
            }));
        }
Beispiel #21
0
        public async Task <IActionResult> Login(string username, string password, bool isFacebook)
        {
            Frontend.AuthenticationModel response = null;
            response = await ApiRequestHelper.postPutEncodedRequest <AuthenticationModel>(
                Helpers.EscolaDeVoceEndpoints.tokenUrl,
                username,
                password,
                isFacebook
                );

            if (response != null)
            {
                if (response.StatusCode != HttpStatusCode.Created)
                {
                    return(Json(new {
                        status = false
                    }));
                }
                Infrastructure.ApiResponse <EscolaDeVoce.Services.ViewModel.UserViewModel> userresponse = null;

                userresponse = await ApiRequestHelper.Get <Infrastructure.ApiResponse <EscolaDeVoce.Services.ViewModel.UserViewModel> >(
                    Helpers.EscolaDeVoceEndpoints.User.info,
                    null,
                    response.access_token
                    );

                const string Issuer = "https://www.escoladevoce.com.br";
                var          claims = new List <Claim> {
                    new Claim(ClaimTypes.Name, userresponse.data.person.name, ClaimValueTypes.String, Issuer),
                    new Claim("Id", userresponse.data.Id.ToString(), ClaimValueTypes.String, Issuer),
                    new Claim(ClaimTypes.Email, userresponse.data.username, ClaimValueTypes.String, Issuer),
                    new Claim("TOKEN", response.access_token, ClaimValueTypes.String, Issuer),
                };

                var userIdentity = new ClaimsIdentity(claims, "Passport");

                if (!String.IsNullOrEmpty(userresponse.data.cover))
                {
                    userIdentity.AddClaim(new Claim("cover", userresponse.data.cover, ClaimValueTypes.String, Issuer));
                }
                if (!String.IsNullOrEmpty(userresponse.data.image))
                {
                    userIdentity.AddClaim(new Claim("image", userresponse.data.image, ClaimValueTypes.String, Issuer));
                }

                var userPrincipal = new ClaimsPrincipal(userIdentity);

                await HttpContext.Authentication.SignInAsync("Cookie", userPrincipal,
                                                             new AuthenticationProperties
                {
                    ExpiresUtc   = DateTime.UtcNow.AddMinutes(30),
                    IsPersistent = true,
                    AllowRefresh = false
                });

                return(Json(new {
                    status = true
                }));
            }

            return(Json(new {
                status = false
            }));
        }
        public async Task <IActionResult> Detail([Bind("Id,name,image,free,description,duration,schoolId,categoriesId,views,order")] Services.ViewModel.CourseViewModel model, ICollection <IFormFile> files)
        {
            var uploads = Path.Combine(_environment.WebRootPath, "images/specialists");

            if (files != null)
            {
                foreach (var file in files)
                {
                    if (file.Length > 0)
                    {
                        var fileextension = Path.GetExtension(file.FileName);
                        var filename      = Guid.NewGuid().ToString() + fileextension;
                        model.image = filename;

                        using (var fileStream = new FileStream(Path.Combine(uploads, filename), FileMode.Create))
                        {
                            await file.CopyToAsync(fileStream);
                        }
                    }
                }
            }

            Infrastructure.ApiResponse <EscolaDeVoce.Services.ViewModel.CourseViewModel> response = null;

            System.Net.Http.HttpMethod method = System.Net.Http.HttpMethod.Post;
            string url = Helpers.EscolaDeVoceEndpoints.Courses.getCourses;

            if (model.Id != Guid.Empty)
            {
                method = System.Net.Http.HttpMethod.Put;
                url   += "/" + model.Id.ToString();
            }

            response = await ApiRequestHelper.postPutRequest <Infrastructure.ApiResponse <EscolaDeVoce.Services.ViewModel.CourseViewModel> >(
                url,
                method,
                JsonConvert.SerializeObject(model)
                );

            if (model.Id != Guid.Empty || (response.data != null && response.data.Id != Guid.Empty))
            {
                var Id = model.Id != Guid.Empty ? model.Id : response.data.Id;
                return(RedirectToAction("Detail", new { id = Id.ToString() }));
            }
            return(RedirectToAction("Index"));
        }
        public async Task <IActionResult> Delete(Guid id)
        {
            Infrastructure.ApiResponse <EscolaDeVoce.Services.ViewModel.CourseViewModel> response = null;
            System.Net.Http.HttpMethod method = System.Net.Http.HttpMethod.Delete;

            response = await ApiRequestHelper.postPutRequest <Infrastructure.ApiResponse <EscolaDeVoce.Services.ViewModel.CourseViewModel> >(
                Helpers.EscolaDeVoceEndpoints.Courses.getCourses + "/" + id.ToString(),
                method
                );

            return(RedirectToAction("Index"));
        }
        public async Task <IActionResult> Detail([Bind("Id,name")] Services.ViewModel.ProjectViewModel model)
        {
            Infrastructure.ApiResponse <EscolaDeVoce.Services.ViewModel.ProjectViewModel> response = null;

            System.Net.Http.HttpMethod method = System.Net.Http.HttpMethod.Post;
            if (model.Id != Guid.Empty)
            {
                method = System.Net.Http.HttpMethod.Put;
            }

            response = await ApiRequestHelper.postPutRequest <Infrastructure.ApiResponse <EscolaDeVoce.Services.ViewModel.ProjectViewModel> >(
                Helpers.EscolaDeVoceEndpoints.Project.getProjects + "/" + model.Id.ToString(),
                method,
                JsonConvert.SerializeObject(model)
                );

            return(View(response.data));
        }
Beispiel #25
0
        public async Task <IActionResult> Detail([Bind("Id,name,charge,image,schoolId")] Services.ViewModel.EspecialistViewModel model, ICollection <IFormFile> files, [Bind("x,y,w,h")] Backend.ViewModel.SizeModel sizeModel)
        {
            var uploads = Path.Combine(_environment.WebRootPath, "images/specialists");

            if (files != null)
            {
                foreach (var file in files)
                {
                    if (file.Length > 0)
                    {
                        var fileextension = Path.GetExtension(file.FileName);
                        var filename      = Guid.NewGuid().ToString() + fileextension;
                        model.image = filename;

                        using (var fileStream = new FileStream(Path.Combine(uploads, filename), FileMode.Create))
                        {
                            await file.CopyToAsync(fileStream);
                        }

                        //Cortar imagem
                        Rectangle cropRect = new Rectangle(sizeModel.x, sizeModel.y, sizeModel.w, sizeModel.h);
                        Bitmap    src      = System.Drawing.Image.FromFile(Path.Combine(uploads, filename)) as Bitmap;
                        Bitmap    target   = new Bitmap(cropRect.Width, cropRect.Height);

                        using (Graphics g = Graphics.FromImage(target))
                        {
                            g.DrawImage(src,
                                        new Rectangle(0, 0, target.Width, target.Height),
                                        cropRect, GraphicsUnit.Pixel);
                        }

                        using (var fileStream = new FileStream(Path.Combine(uploads, "crp_" + filename), FileMode.Create))
                        {
                            await file.CopyToAsync(fileStream);
                        }
                    }
                }
            }

            Infrastructure.ApiResponse <EscolaDeVoce.Services.ViewModel.EspecialistViewModel> response = null;
            System.Net.Http.HttpMethod method = System.Net.Http.HttpMethod.Post;
            string url = Helpers.EscolaDeVoceEndpoints.Especialists.get;

            if (model.Id != Guid.Empty)
            {
                url   += "/" + model.Id.ToString();
                method = System.Net.Http.HttpMethod.Put;
            }

            response = await ApiRequestHelper.postPutRequest <Infrastructure.ApiResponse <EscolaDeVoce.Services.ViewModel.EspecialistViewModel> >(
                url,
                method,
                JsonConvert.SerializeObject(model)
                );

            if ((method == System.Net.Http.HttpMethod.Post && response.data != null && response.data.Id != Guid.Empty) || model.Id != Guid.Empty)
            {
                Guid Id = model.Id != Guid.Empty ? model.Id : response.data.Id;
                return(RedirectToAction("Detail", new { id = Id.ToString() }));
            }
            else
            {
                return(RedirectToAction("Index"));
            }
        }