public async Task <ProfileSaveResponseModel> ProfileSaveApi(ProfileSaveRequestModel request, Action <object> success, Action <object> failed)
        {
            ProfileSaveResponseModel resmodel = new ProfileSaveResponseModel();

            try
            {
                var    url        = string.Format("{0}/api/appconnect/ProfileSave", WebServiceDetails.BaseUri);
                string randomGuid = Guid.NewGuid().ToString();
                var    dic        = new Dictionary <string, string>();
                //dic.Add("Content-Type", "Application/json");
                dic.Add("randomguid", randomGuid);
                dic.Add("hash", randomGuid + WebServiceDetails.AppKey + request.usertoken + Helpers.Constants.LoginUserSecret + Helpers.Constants.UserEmailAddress + Helpers.Constants.UserLastname);
                var result   = _apiProvider.Post <ProfileSaveResponseModel, ProfileSaveRequestModel>(url, request, dic);
                var response = result.Result;
                ProfileSaveResponseModel objres = null;
                dynamic obj = "";
                ProfileSaveResponseModel reg = new ProfileSaveResponseModel();
                if (response.IsSuccessful != false)
                {
                    objres = JsonConvert.DeserializeObject <ProfileSaveResponseModel>(response.RawResult);
                    success.Invoke(objres);
                }
                else
                {
                    UserDialogs.Instance.HideLoading();
                    failed.Invoke(obj);
                }
            }
            catch (Exception exception)
            {
                UserDialogs.Instance.HideLoading();
                UserDialogs.Instance.Alert("Something went wrong please try again.", "", "OK");
            }
            return(resmodel);
        }
        public async Task <IActionResult> SignIn([FromBody] ProfileSaveRequestModel model)
        {
            try
            {
                var user = await _context.Users.SingleOrDefaultAsync(a => a.UserId == UserId);

                if (user == null)
                {
                    user = new AppUser {
                        UserId = this.UserId
                    };
                    user.FirstName             = model.FirstName;
                    user.LastName              = model.LastName;
                    user.Email                 = model.Email;
                    user.Gender                = model.Gender;
                    user.City                  = model.City;
                    user.Region                = model.Region;
                    user.Country               = model.Country;
                    user.PhotoUrl              = model.PhotoUrl;
                    user.DefaultActivityTypeId = (byte)Enum.Parse <ActivityTypeEnum>(model.DefaultActivityType ?? "Ski", true);
                    _context.Users.Add(user);

                    await _context.SaveChangesAsync();
                }

                var response = Responses.Profile(user, Enumerable.Empty <Activity>());
                return(Ok(response));
            }
            catch (Exception e)
            {
                Console.WriteLine("Error signing in", e);
                _logger.LogError(e, "Error siging in");
                return(ErrorResponse.AsStatusCodeResult(HttpStatusCode.InternalServerError, "Error siging in"));
            }
        }