コード例 #1
0
        public async Task <IActionResult> Edit(long ID, U model)
        {
            if (ID != model.ID)
            {
                return(new Error404NotFoundViewResult());
            }

            if (ModelState.IsValid)
            {
                using (var httpClient = new HttpClient())
                {
                    var requestUri = $"{Configuration.DefaultAPI}/home/{CurrentHomeID}/{CurrentAreaName}/createedit";
                    httpClient.DefaultRequestHeaders.Add("CurrentUserID", CurrentUserID.ToString());
                    httpClient.DefaultRequestHeaders.Add("CurrentHomeID", CurrentHomeID.ToString());

                    using (var response = await httpClient.PostAsJsonAsync(requestUri, model))
                    {
                        var content = await response.Content.ReadAsStringAsync();

                        if (response.IsSuccessStatusCode)
                        {
                            return(RedirectToAction(nameof(Index)));
                        }
                        else
                        {
                            return(View("_Edit", model));
                        }
                    }
                }
            }

            return(View("_Edit", model));
        }
コード例 #2
0
        public async Task <IActionResult> PostEvent(string targetObjectID, string name, string description, string startdate, string enddate, string[] participants)
        {
            var @event = new EventPostViewModel()
            {
                HomeID             = (long)CurrentHomeID,
                Name               = name,
                Details            = description,
                StartDate          = DateTime.Parse(startdate),
                EndDate            = DateTime.Parse(enddate),
                ParticipantUserIDs = participants,
                TargetObjectID     = long.Parse(targetObjectID)
            };

            using (var httpClient = new HttpClient())
            {
                var requestUri = $"{Configuration.DefaultAPI}/events/post";
                httpClient.DefaultRequestHeaders.Add("CurrentUserID", CurrentUserID.ToString());
                httpClient.DefaultRequestHeaders.Add("CurrentHomeID", CurrentHomeID.ToString());

                using (var response = await httpClient.PostAsJsonAsync(requestUri, @event))
                {
                    string content = await response.Content.ReadAsStringAsync();

                    if (response.IsSuccessStatusCode)
                    {
                        @event = JsonConvert.DeserializeObject <EventPostViewModel>(content);
                    }
                }
            }

            return(Json(EventsRenderer.BuildPostEvent(@event)));
        }
コード例 #3
0
        public async Task <IActionResult> Settings()
        {
            if (string.IsNullOrEmpty(HttpContext.Session.GetString("HomeID")))
            {
                return(RedirectToAction("Login", "Home"));
            }

            var settings = new HomeSettingPostViewModel();

            using (var httpClient = new HttpClient())
            {
                var requestUri = $"{Configuration.DefaultAPI}/{CurrentControllerName}/settings";
                httpClient.DefaultRequestHeaders.Add("CurrentUserID", CurrentUserID.ToString());
                httpClient.DefaultRequestHeaders.Add("CurrentHomeID", CurrentHomeID.ToString());

                using (var response = await httpClient.GetAsync(requestUri))
                {
                    string content = await response.Content.ReadAsStringAsync();

                    if (response.IsSuccessStatusCode)
                    {
                        settings = JsonConvert.DeserializeObject <HomeSettingPostViewModel>(content);
                    }
                }
            }

            if (settings != null)
            {
                return(View(settings));
            }

            return(View());
        }
コード例 #4
0
        public async Task <IActionResult> Settings(HomeSettingPostViewModel settings)
        {
            if (settings.RentDueDateDay <= 0 || settings.RentDueDateDay >= 28)
            {
                ModelState.AddModelError("RentDueDateDay", "Rent due date day value can only be between 1 and 27, included.");
                return(View(settings));
            }

            using (var httpClient = new HttpClient())
            {
                var requestUri = $"{Configuration.DefaultAPI}/{CurrentControllerName}/settings";
                httpClient.DefaultRequestHeaders.Add("CurrentUserID", CurrentUserID.ToString());
                httpClient.DefaultRequestHeaders.Add("CurrentHomeID", CurrentHomeID.ToString());

                using (var response = await httpClient.PostAsJsonAsync(requestUri, settings))
                {
                    var content = await response.Content.ReadAsStringAsync();

                    if (response.IsSuccessStatusCode)
                    {
                        settings = JsonConvert.DeserializeObject <HomeSettingPostViewModel>(content);

                        if (settings.ChangeHttpSession)
                        {
                            HttpContext.Session.SetString("HomeName", settings.HomeName);
                        }
                    }
                }
            }

            return(RedirectToAction(nameof(Index)));
        }
コード例 #5
0
        public async Task <IActionResult> PostLink(string targetObjectID, string[] objectBIDs, string[] objectLinkTypes)
        {
            var link = new ObjectLinkPostViewModel()
            {
                ObjectBID      = long.Parse(objectBIDs[0]),
                ObjectLinkType = objectLinkTypes[0],
                TargetObjectID = long.Parse(targetObjectID)
            };

            using (var httpClient = new HttpClient())
            {
                var requestUri = $"{Configuration.DefaultAPI}/objectlinks/post";
                httpClient.DefaultRequestHeaders.Add("CurrentUserID", CurrentUserID.ToString());
                httpClient.DefaultRequestHeaders.Add("CurrentHomeID", CurrentHomeID.ToString());

                using (var response = await httpClient.PostAsJsonAsync(requestUri, link))
                {
                    string content = await response.Content.ReadAsStringAsync();

                    if (response.IsSuccessStatusCode)
                    {
                        link = JsonConvert.DeserializeObject <ObjectLinkPostViewModel>(content);
                    }
                }
            }

            return(Json(ObjectLinksRenderer.BuildPostLink(link)));
        }
コード例 #6
0
        private async Task <List <string> > GetLinks(long targetObjectID)
        {
            var links = new List <ObjectLinkPostViewModel>();

            using (var httpClient = new HttpClient())
            {
                var requestUri = $"{Configuration.DefaultAPI}/objectlinks/{targetObjectID}";
                httpClient.DefaultRequestHeaders.Add("CurrentUserID", CurrentUserID.ToString());
                httpClient.DefaultRequestHeaders.Add("CurrentHomeID", CurrentHomeID.ToString());

                using (var response = await httpClient.GetAsync(requestUri))
                {
                    string content = await response.Content.ReadAsStringAsync();

                    if (response.IsSuccessStatusCode)
                    {
                        links = JsonConvert.DeserializeObject <List <ObjectLinkPostViewModel> >(content);
                    }
                }
            }

            var result = ObjectLinksRenderer.BuildLinks(links);

            return(result);
        }
コード例 #7
0
        public async Task <IActionResult> PostComment(long targetObjectID, string comment)
        {
            var result     = string.Empty;
            var theComment = new CommentPostViewModel()
            {
                Details        = comment,
                TargetObjectID = targetObjectID
            };

            using (var httpClient = new HttpClient())
            {
                var requestUri = $"{Configuration.DefaultAPI}/comments/post";
                httpClient.DefaultRequestHeaders.Add("CurrentUserID", CurrentUserID.ToString());
                httpClient.DefaultRequestHeaders.Add("CurrentHomeID", CurrentHomeID.ToString());

                using (var response = await httpClient.PostAsJsonAsync(requestUri, theComment))
                {
                    string content = await response.Content.ReadAsStringAsync();

                    if (response.IsSuccessStatusCode)
                    {
                        result = content;
                    }
                }
            }

            return(Json(result));
        }
コード例 #8
0
        protected void UploadUpdate_Click(object sender, System.EventArgs e)
        {
            if (File.PostedFile != null && File.PostedFile.FileName.Trim().Length > 0 && File.PostedFile.ContentLength > 0)
            {
                int    width              = SueetieConfiguration.Get().AvatarSettings.Width;
                int    height             = SueetieConfiguration.Get().AvatarSettings.Height;
                int    thumbnailWidth     = SueetieConfiguration.Get().AvatarSettings.ThumbnailHeight;
                int    thumbnailHeight    = SueetieConfiguration.Get().AvatarSettings.ThumbnailWidth;
                string imageName          = CurrentUserID.ToString() + ".jpg";
                string thumbnailImageName = CurrentUserID.ToString() + "t.jpg";

                ImageFormat imgFormat = ImageFormat.Jpeg;

                try
                {
                    #region Save to disk

                    Bitmap originalBitmap = new Bitmap(File.PostedFile.InputStream);
                    //ImageHelper.CalculateOptimizedWidthAndHeight(originalBitmap, out width, out height);

                    int    jpegQuality = SueetieConfiguration.Get().AvatarSettings.ImageQuality;
                    string path        = HttpContext.Current.Server.MapPath("/") + SueetieConfiguration.Get().AvatarSettings.AvatarFolderPath;

                    ImageHelper.SaveImageFile(originalBitmap, path + imageName, imgFormat, width, height, jpegQuality);
                    ImageHelper.SaveImageFile(originalBitmap, path + thumbnailImageName, imgFormat, thumbnailWidth, thumbnailHeight, jpegQuality);

                    #endregion

                    #region Save to database for use with Forums

                    SueetieUserAvatar sueetieUserAvatar = new SueetieUserAvatar();

                    MemoryStream stream = new MemoryStream();
                    originalBitmap.Save(stream, ImageFormat.Bmp);

                    byte[] data = new byte[stream.Length];
                    stream.Seek(0, System.IO.SeekOrigin.Begin);
                    stream.Read(data, 0, (int)stream.Length);

                    sueetieUserAvatar.UserID          = CurrentUserID;
                    sueetieUserAvatar.AvatarImage     = data;
                    sueetieUserAvatar.AvatarImageType = "image/jpeg";

                    SueetieUsers.UpdateSueetieUserAvatar(sueetieUserAvatar);
                    SueetieUsers.ClearUserCache(sueetieUserAvatar.UserID);

                    //Response.Redirect("myaccountinfo.aspx?av=1&bio=2&pr=2&pw=2");
                    Response.Redirect("myaccountinfo.aspx?av=1");
                    #endregion
                }
                catch
                {
                    //return null;
                }
            }

            BindData();
        }
コード例 #9
0
        public async Task <IActionResult> Index()
        {
            if (string.IsNullOrEmpty(HttpContext.Session.GetString("UserID")))
            {
                return(RedirectToAction("Login", "Account"));
            }

            if (string.IsNullOrEmpty(HttpContext.Session.GetString("HomeID")))
            {
                return(RedirectToAction("Login"));
            }

            var model  = new HomePageDisplayModel();
            var status = new HomeStatusPostViewModel();

            using (var httpClient = new HttpClient())
            {
                var requestUri = $"{Configuration.DefaultAPI}/{CurrentControllerName}/page";
                httpClient.DefaultRequestHeaders.Add("CurrentUserID", CurrentUserID.ToString());
                httpClient.DefaultRequestHeaders.Add("CurrentHomeID", CurrentHomeID.ToString());

                using (var response = await httpClient.GetAsync(requestUri))
                {
                    string content = await response.Content.ReadAsStringAsync();

                    if (response.IsSuccessStatusCode)
                    {
                        model = JsonConvert.DeserializeObject <HomePageDisplayModel>(content);
                    }
                }
            }

            using (var httpClient = new HttpClient())
            {
                var requestUri = $"{Configuration.DefaultAPI}/{CurrentControllerName}/status";
                httpClient.DefaultRequestHeaders.Add("CurrentUserID", CurrentUserID.ToString());
                httpClient.DefaultRequestHeaders.Add("CurrentHomeID", CurrentHomeID.ToString());

                using (var response = await httpClient.GetAsync(requestUri))
                {
                    string content = await response.Content.ReadAsStringAsync();

                    if (response.IsSuccessStatusCode)
                    {
                        status = JsonConvert.DeserializeObject <HomeStatusPostViewModel>(content);
                    }
                }
            }

            model.HomeStatus     = status;
            ViewData["Username"] = CurrentUserName;

            return(View(model));
        }
コード例 #10
0
        protected void DeleteAvatar_Click(object sender, System.EventArgs e)
        {
            SueetieUsers.DeleteAvatar(CurrentUserID);
            string path = HttpContext.Current.Server.MapPath("/") + SueetieConfiguration.Get().AvatarSettings.AvatarFolderPath +
                          CurrentUserID.ToString() + ".jpg";

            System.IO.File.Delete(path);
            SueetieUsers.ClearUserCache(CurrentUserID);
            Response.Redirect("myaccountinfo.aspx?dv=1&bio=2");
            //BindData();
        }
コード例 #11
0
        public async Task <JsonResult> GetHomeStatus()
        {
            var result = string.Empty;

            if (!string.IsNullOrEmpty(HttpContext.Session.GetString("HomeID")))
            {
                var status = new HomeStatusPostViewModel();
                var user   = new UserPostViewModel();

                using (var httpClient = new HttpClient())
                {
                    var requestUri = $"{Configuration.DefaultAPI}/{CurrentControllerName}/status";
                    httpClient.DefaultRequestHeaders.Add("CurrentUserID", CurrentUserID.ToString());
                    httpClient.DefaultRequestHeaders.Add("CurrentHomeID", CurrentHomeID.ToString());

                    using (var response = await httpClient.GetAsync(requestUri))
                    {
                        string content = await response.Content.ReadAsStringAsync();

                        if (response.IsSuccessStatusCode)
                        {
                            status = JsonConvert.DeserializeObject <HomeStatusPostViewModel>(content);
                        }
                    }
                }

                if (status.ID > 0)
                {
                    using (var httpClient = new HttpClient())
                    {
                        var requestUri = $"{Configuration.DefaultAPI}/users/{status.UserID}";
                        httpClient.DefaultRequestHeaders.Add("CurrentUserID", CurrentUserID.ToString());
                        httpClient.DefaultRequestHeaders.Add("CurrentHomeID", CurrentHomeID.ToString());

                        using (var response = await httpClient.GetAsync(requestUri))
                        {
                            string content = await response.Content.ReadAsStringAsync();

                            if (response.IsSuccessStatusCode)
                            {
                                user = JsonConvert.DeserializeObject <UserPostViewModel>(content);
                            }
                        }
                    }

                    result = $"{status.Status};{user.Name};{status.Details}";
                    return(Json(result));
                }
            }

            result = $"1;system_generated;No one has set a status yet!";
            return(Json(result));
        }
コード例 #12
0
        public async Task <IActionResult> Login(HomePostViewModel home)
        {
            home.ConfirmPassword = home.Password;
            ModelState.Clear();

            if (string.IsNullOrEmpty(home.Name))
            {
                ModelState.AddModelError("Name", "Home name field is required.");
            }
            else if (string.IsNullOrEmpty(home.Password))
            {
                ModelState.AddModelError("Password", "Password field is required.");
            }
            else
            {
                using (var httpClient = new HttpClient())
                {
                    var requestUri = $"{Configuration.DefaultAPI}/{CurrentControllerName}/{nameof(Login)}";
                    httpClient.DefaultRequestHeaders.Add("CurrentUserID", CurrentUserID.ToString());

                    using (var response = await httpClient.PostAsJsonAsync(requestUri, home))
                    {
                        var content = await response.Content.ReadAsStringAsync();

                        if (response.IsSuccessStatusCode)
                        {
                            home = JsonConvert.DeserializeObject <HomePostViewModel>(content);

                            if (home != null)
                            {
                                HttpContext.Session.SetString("HomeID", home.ID.ToString());
                                HttpContext.Session.SetString("HomeName", home.Name.ToString());

                                await SetUserToCurrentHome(home.ID);

                                return(RedirectToAction("Index", "Home"));
                            }
                            else
                            {
                                ModelState.AddModelError("", "Home name or password is wrong.");
                            }
                        }
                        else
                        {
                            ModelState.AddModelError("", "Home name or password is wrong.");
                        }
                    }
                }
            }

            return(View());
        }
コード例 #13
0
        public async Task SetUserToCurrentHome(long homeID)
        {
            using (var httpClient = new HttpClient())
            {
                var requestUri = $"{Configuration.DefaultAPI}/{CurrentControllerName}/homeuser";
                httpClient.DefaultRequestHeaders.Add("CurrentUserID", CurrentUserID.ToString());
                httpClient.DefaultRequestHeaders.Add("CurrentHomeID", homeID.ToString());

                using (var response = await httpClient.PostAsJsonAsync(requestUri, new { }))
                {
                }
            }
        }
コード例 #14
0
        public async Task <ActionResult> DeleteImage(long ID)
        {
            var image = new ImagePostViewModel();

            using (var httpClient = new HttpClient())
            {
                var requestUri = $"{Configuration.DefaultAPI}/images/image/{ID}";
                httpClient.DefaultRequestHeaders.Add("CurrentUserID", CurrentUserID.ToString());
                httpClient.DefaultRequestHeaders.Add("CurrentHomeID", CurrentHomeID.ToString());

                using (var response = await httpClient.GetAsync(requestUri))
                {
                    string content = await response.Content.ReadAsStringAsync();

                    if (response.IsSuccessStatusCode)
                    {
                        image = JsonConvert.DeserializeObject <ImagePostViewModel>(content);
                    }
                }
            }

            if (image == null)
            {
                return(Json(new { success = false, message = "404: Image does not exist." }));
            }
            else
            {
                return(Json(new { success = false, message = "404: Image does not exist." }));

                // TODO: This here needs to send request to API
                // Also, make sure directory path is outside of wwwroot
                //if (Directory.Exists(ImagesPath))
                //{
                //    var di = new DirectoryInfo(ImagesPath);
                //    foreach (var file in di.GetFiles())
                //    {
                //        if (file.Name == image.Name)
                //        {
                //            file.Delete();
                //            break;
                //        }
                //    }

                //    BaseWebService.Delete(image);

                //    return Json(new { success = true, message = "Image deleted successfully." });
                //}
                //else
                //    return Json(new { success = false, message = "404: Images path does not exist." });
            }
        }
コード例 #15
0
        protected void InitData()
        {
            Query = "&appid=" + Request.QueryString["appid"] + "&tabid=" + Request.QueryString["tabid"] + "&dirid=" + DirID
                    + "&title1=" + stitle.UrlEncode() + "&date1=" + sdate1 + "&date2=" + sdate2;
            Query1 = Query + "&pagesize=" + Request.QueryString["pagesize"] + "&pagenumber=" + Request.QueryString["pagenumber"];
            string pager;
            string dirIdString = "";

            if (DirID.IsGuid())
            {
                dirIdString = new RoadFlow.Platform.DocumentDirectory().GetAllChildIdString(DirID.ToGuid(), CurrentUserID);
            }
            DocDt = Doc.GetList(out pager, dirIdString, CurrentUserID.ToString(), Query, stitle, sdate1, sdate2, false);
            this.PagerText.Text = pager;
        }
コード例 #16
0
        protected virtual async Task PopulateViewData(U model)
        {
            var users = await GetUsersInCurrentHome();

            var usersSelectList = users.Select(x => new SelectListItem()
            {
                Text = x.Name, Value = x.ID.ToString()
            }).ToList();

            ViewData["UsersSelectList"] = usersSelectList;

            // TODO: Brainstorm on more object link types...
            var objectLinkTypesSelectList = new List <SelectListItem>()
            {
                new SelectListItem()
                {
                    Text = "relates to", Value = "relates to", Selected = true
                }
            };

            ViewData["ObjectLinkTypeSelectList"] = objectLinkTypesSelectList;

            var objects = new List <BusinessObjectDisplayViewModel>();

            using (var httpClient = new HttpClient())
            {
                var requestUri = $"{Configuration.DefaultAPI}/home/objects/{model.ObjectID}";
                httpClient.DefaultRequestHeaders.Add("CurrentUserID", CurrentUserID.ToString());
                httpClient.DefaultRequestHeaders.Add("CurrentHomeID", CurrentHomeID.ToString());

                using (var response = await httpClient.GetAsync(requestUri))
                {
                    string content = await response.Content.ReadAsStringAsync();

                    if (response.IsSuccessStatusCode)
                    {
                        objects = JsonConvert.DeserializeObject <List <BusinessObjectDisplayViewModel> >(content);
                    }
                }
            }

            var objectsSelectList = objects.Select(x => new SelectListItem()
            {
                Text = x.Name, Value = x.ObjectID.ToString()
            }).ToList();

            ViewData["ObjectBIDSelectList"] = objectsSelectList;
        }
コード例 #17
0
        public async Task <ActionResult> SetHomeStatus(string homeStatusString, string homeStatusDetailsString)
        {
            if (!string.IsNullOrEmpty(HttpContext.Session.GetString("HomeID")))
            {
                using (var httpClient = new HttpClient())
                {
                    var requestUri = $"{Configuration.DefaultAPI}/{CurrentControllerName}/status?homeStatusString={homeStatusString}&homeStatusDetailsString={homeStatusDetailsString}";
                    httpClient.DefaultRequestHeaders.Add("CurrentUserID", CurrentUserID.ToString());
                    httpClient.DefaultRequestHeaders.Add("CurrentHomeID", CurrentHomeID.ToString());

                    using (var response = await httpClient.PostAsJsonAsync(requestUri, new { }))
                    {
                    }
                }
            }

            return(Ok());
        }
コード例 #18
0
        public async Task<JsonResult> GetEvents()
        {
            var result = new List<EventViewModel>();

            using (var httpClient = new HttpClient())
            {
                var requestUri = $"{Configuration.DefaultAPI}/{CurrentControllerName}/events";
                httpClient.DefaultRequestHeaders.Add("CurrentUserID", CurrentUserID.ToString());
                httpClient.DefaultRequestHeaders.Add("CurrentHomeID", CurrentHomeID.ToString());

                using (var response = await httpClient.GetAsync(requestUri))
                {
                    string content = await response.Content.ReadAsStringAsync();

                    if (response.IsSuccessStatusCode)
                        result = JsonConvert.DeserializeObject<List<EventViewModel>>(content);
                }
            }

            return Json(result.ToArray());
        }
コード例 #19
0
        public async Task <ActionResult> CreateMessage(string username, string messageText)
        {
            using (var httpClient = new HttpClient())
            {
                var requestUri = $"{Configuration.DefaultAPI}/{CurrentControllerName}/chat?username={username}&messageText={messageText}";
                httpClient.DefaultRequestHeaders.Add("CurrentUserID", CurrentUserID.ToString());
                httpClient.DefaultRequestHeaders.Add("CurrentHomeID", CurrentHomeID.ToString());

                using (var response = await httpClient.PostAsJsonAsync(requestUri, new { }))
                {
                    var content = await response.Content.ReadAsStringAsync();

                    if (response.IsSuccessStatusCode)
                    {
                        return(Ok());
                    }
                }
            }

            return(StatusCode(StatusCodes.Status500InternalServerError));
        }
コード例 #20
0
        private void BindData()
        {
            AvatarImg.Visible          = true;
            DeleteAvatarButton.Visible = false;
            DeleteAvatarButton.Text    = SueetieLocalizer.GetString("accountinfo_clear_avatar_button");

            if (CurrentSueetieUser.HasAvatarImage)
            {
                AvatarImg.ImageUrl = "/images/avatars/" + CurrentUserID.ToString() + ".jpg?n=" + DateTime.Now.ToLongTimeString();
            }
            else
            {
                AvatarImg.ImageUrl = "/images/avatars/noavatar.jpg";
            }

            AvatarImg.CssClass         = "AvatarBig";
            DeleteAvatarButton.Visible = true;


            if (Request.QueryString["dv"] == "1")
            {
                DeleteMessage.Visible = true;
            }
            if (Request.QueryString["av"] == "1")
            {
                UpdateMessage.Visible = true;
            }
            if (Request.QueryString["bio"] == "1")
            {
                lblBioUpdateMessage.Visible = true;
            }
            if (Request.QueryString["pr"] == "1")
            {
                lblProfileMessage.Visible = true;
            }
            if (Request.QueryString["pw"] == "1")
            {
                lblPasswordMessage.Visible = true;
            }
        }
コード例 #21
0
        private async Task <List <string> > GetComments(long targetObjectID)
        {
            var result = new List <string>();

            using (var httpClient = new HttpClient())
            {
                var requestUri = $"{Configuration.DefaultAPI}/comments/{targetObjectID}";
                httpClient.DefaultRequestHeaders.Add("CurrentUserID", CurrentUserID.ToString());
                httpClient.DefaultRequestHeaders.Add("CurrentHomeID", CurrentHomeID.ToString());

                using (var response = await httpClient.GetAsync(requestUri))
                {
                    string content = await response.Content.ReadAsStringAsync();

                    if (response.IsSuccessStatusCode)
                    {
                        result = JsonConvert.DeserializeObject <List <string> >(content);
                    }
                }
            }

            return(result);
        }
コード例 #22
0
        public async Task <JsonResult> GetCount()
        {
            var result = 0;

            using (var httpClient = new HttpClient())
            {
                var requestUri = $"{Configuration.DefaultAPI}/{CurrentControllerName}/count";
                httpClient.DefaultRequestHeaders.Add("CurrentUserID", CurrentUserID.ToString());
                httpClient.DefaultRequestHeaders.Add("CurrentHomeID", CurrentHomeID.ToString());

                using (var response = await httpClient.GetAsync(requestUri))
                {
                    string content = await response.Content.ReadAsStringAsync();

                    if (response.IsSuccessStatusCode)
                    {
                        result = int.Parse(content);
                    }
                }
            }

            return(Json(result));
        }
コード例 #23
0
        public async Task <IActionResult> Register(HomePostViewModel home)
        {
            if (ModelState.IsValid)
            {
                using (var httpClient = new HttpClient())
                {
                    var requestUri = $"{Configuration.DefaultAPI}/{CurrentControllerName}/{nameof(Register)}";
                    httpClient.DefaultRequestHeaders.Add("CurrentUserID", CurrentUserID.ToString());

                    using (var response = await httpClient.PostAsJsonAsync(requestUri, home))
                    {
                        var content = await response.Content.ReadAsStringAsync();

                        if (response.IsSuccessStatusCode)
                        {
                            home = JsonConvert.DeserializeObject <HomePostViewModel>(content);
                        }
                        else
                        {
                            ModelState.AddModelError("Name", "This home name is already taken.");
                            return(View(home));
                        }
                    }
                }

                ModelState.Clear();

                HttpContext.Session.SetString("HomeID", home.ID.ToString());
                HttpContext.Session.SetString("HomeName", home.Name.ToString());

                await SetUserToCurrentHome(home.ID);

                return(RedirectToAction("Index", "Home"));
            }

            return(View());
        }
コード例 #24
0
        private SqlQuery CreateQueryFilter(SqlQuery query, TaskFilter filter, bool isAdmin, bool checkAccess)
        {
            if (filter.Follow)
            {
                IEnumerable <string> objects = NotifySource.Instance.GetSubscriptionProvider().GetSubscriptions(NotifyConstants.Event_NewCommentForMessage, NotifySource.Instance.GetRecipientsProvider().GetRecipient(CurrentUserID.ToString()));

                if (filter.ProjectIds.Count != 0)
                {
                    objects = objects.Where(r => r.Split('_')[2] == filter.ProjectIds[0].ToString(CultureInfo.InvariantCulture));
                }

                var ids = objects.Select(r => r.Split('_')[1]).ToArray();
                query.Where(Exp.In("t.id", ids));
            }

            if (filter.ProjectIds.Count != 0)
            {
                query.Where(Exp.In("t.project_id", filter.ProjectIds));
            }
            else
            {
                if (ProjectsCommonSettings.Load().HideEntitiesInPausedProjects)
                {
                    query.Where(!Exp.Eq("p.status", ProjectStatus.Paused));
                }

                if (filter.MyProjects)
                {
                    query.InnerJoin(ParticipantTable + " ppp", Exp.EqColumns("ppp.tenant", "t.tenant_id") & Exp.EqColumns("p.id", "ppp.project_id") & Exp.Eq("ppp.removed", false));
                    query.Where("ppp.participant_id", CurrentUserID);
                }
            }

            if (filter.TagId != 0)
            {
                if (filter.TagId == -1)
                {
                    query.LeftOuterJoin(ProjectTagTable + " pt", Exp.EqColumns("pt.project_id", "t.project_id"));
                    query.Where("pt.tag_id", null);
                }
                else
                {
                    query.InnerJoin(ProjectTagTable + " pt", Exp.EqColumns("pt.project_id", "t.project_id"));
                    query.Where("pt.tag_id", filter.TagId);
                }
            }

            if (filter.UserId != Guid.Empty)
            {
                query.Where("t.create_by", filter.UserId);
            }

            if (filter.DepartmentId != Guid.Empty)
            {
                query.InnerJoin("core_usergroup cug", Exp.EqColumns("cug.tenant", "t.tenant_id") & Exp.Eq("cug.removed", false) & Exp.EqColumns("cug.userid", "t.create_by"));
                query.Where("cug.groupid", filter.DepartmentId);
            }

            if (!filter.FromDate.Equals(DateTime.MinValue) && !filter.ToDate.Equals(DateTime.MinValue) && !filter.ToDate.Equals(DateTime.MaxValue))
            {
                query.Where(Exp.Between("t.create_on", filter.FromDate, filter.ToDate.AddDays(1)));
            }

            if (filter.MessageStatus.HasValue)
            {
                query.Where("t.status", filter.MessageStatus.Value);
            }

            if (!string.IsNullOrEmpty(filter.SearchText))
            {
                if (FullTextSearch.SupportModule(FullTextSearch.ProjectsMessagesModule))
                {
                    var mIds = FullTextSearch.Search(FullTextSearch.ProjectsMessagesModule.Match(filter.SearchText));

                    query.Where(Exp.In("t.id", mIds));
                }
                else
                {
                    query.Where(Exp.Like("t.title", filter.SearchText, SqlLike.AnyWhere));
                }
            }

            if (checkAccess)
            {
                query.Where(Exp.Eq("p.private", false));
            }
            else if (!isAdmin)
            {
                var isInTeam = new SqlQuery(ParticipantTable).Select("security").Where(Exp.EqColumns("p.id", "project_id") & Exp.Eq("removed", false) & Exp.Eq("participant_id", CurrentUserID) & !Exp.Eq("security & " + (int)ProjectTeamSecurity.Messages, (int)ProjectTeamSecurity.Messages));
                query.Where(Exp.Eq("p.private", false) | Exp.Eq("p.responsible_id", CurrentUserID) | (Exp.Eq("p.private", true) & Exp.Exists(isInTeam)));
            }

            return(query);
        }
コード例 #25
0
        private bool AttachmentsAvailableForUpdate(DataTable dtDocumentOrgUsers)
        {
            if (User.IsInRole(((int)UserRoles.urBudgetDivisionAdmin).ToString()))
            {
                return(true);
            }

            var organizations = "|";
            var reviewers     = "|";

            foreach (DataRow dr in dtDocumentOrgUsers.Rows)
            {
                organizations = organizations + dr["Organization"].ToString() + "|";
                reviewers     = reviewers + dr["ReviewerUserID"].ToString() + "|";
            }

            if (User.IsInRole(((int)UserRoles.urOrganizationAdmin).ToString()) && (organizations.IndexOf("|" + CurrentUserOrganization + "|") > -1))
            {
                return(true);
            }

            if (User.IsInRole(((int)UserRoles.urReviewer).ToString()) && (reviewers.IndexOf("|" + CurrentUserID.ToString() + "|") > -1))
            {
                return(true);
            }

            return(false);
        }
コード例 #26
0
        public async Task <IActionResult> Delete(long?ID)
        {
            if (ID == null)
            {
                return(new Error404NotFoundViewResult());
            }

            var model = new U();

            using (var httpClient = new HttpClient())
            {
                var requestUri = $"{Configuration.DefaultAPI}/home/{CurrentHomeID}/{CurrentAreaName}/{(long)ID}";
                httpClient.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("CurrentUserID", CurrentUserID.ToString());

                using (var response = await httpClient.GetAsync(requestUri))
                {
                    string content = await response.Content.ReadAsStringAsync();

                    if (response.IsSuccessStatusCode)
                    {
                        model = JsonConvert.DeserializeObject <U>(content);
                    }
                }
            }

            if (model.ID > 0)
            {
                using (var httpClient = new HttpClient())
                {
                    var requestUri = $"{Configuration.DefaultAPI}/home/{CurrentHomeID}/{CurrentAreaName}/delete/{(long)ID}";
                    httpClient.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("CurrentUserID", CurrentUserID.ToString());

                    using (var response = await httpClient.GetAsync(requestUri))
                    {
                        string content = await response.Content.ReadAsStringAsync();

                        if (response.IsSuccessStatusCode)
                        {
                            return(RedirectToAction(nameof(Index)));
                        }
                        else
                        {
                            return(new Error404NotFoundViewResult());
                        }
                    }
                }
            }
            else
            {
                return(new Error404NotFoundViewResult());
            }
        }
コード例 #27
0
        public async Task <JsonResult> GetCount()
        {
            int count = 0;

            using (var httpClient = new HttpClient())
            {
                var requestUri = $"{Configuration.DefaultAPI}/home/{CurrentHomeID}/{CurrentAreaName}/{CurrentControllerName}/count";
                httpClient.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("CurrentUserID", CurrentUserID.ToString());

                using (var response = await httpClient.GetAsync(requestUri))
                {
                    string content = await response.Content.ReadAsStringAsync();

                    if (response.IsSuccessStatusCode)
                    {
                        count = JsonConvert.DeserializeObject <int>(content);
                    }
                }
            }

            return(Json(count));
        }
コード例 #28
0
        public IActionResult Submit([FromBody] SubmitOrder model)
        {
            try
            {
                //防止重复下单
                DateTime cacheEntry;
                string   cacheKey = "CacheKey" + CurrentUserID;
                // Look for cache key.
                if (!_cache.TryGetValue(cacheKey, out cacheEntry))
                {
                    // Key not in cache, so get data.
                    cacheEntry = DateTime.Now;

                    // Set cache options.
                    var cacheEntryOptions = new MemoryCacheEntryOptions()
                                            // Keep in cache for this time, reset time if accessed.
                                            .SetSlidingExpiration(TimeSpan.FromSeconds(3));
                    // Save data in cache.
                    _cache.Set(cacheKey, cacheEntry, cacheEntryOptions);
                }
                else
                {
                    if ((DateTime.Now - cacheEntry).Seconds < 3)
                    {
                        throw new Exception("重复提交");
                    }
                }
                using (var tran = _context.Database.BeginTransaction())
                {
                    //1.查询购物车
                    //2.查询地址
                    //3.提交订单(余额支付)
                    //4.发起支付
                    var list = from a in _context.ShopCarts
                               where model.ShopCartID.Contains(a.ID)
                               select a;
                    if (list == null || list.Count() == 0)
                    {
                        throw new Exception("购物车商品不存在");
                    }

                    var address = _context.ShippingAddress.Find(model.AddressID);
                    if (address == null)
                    {
                        throw new Exception("地址信息不存在");
                    }
                    decimal total = list.Sum(s => s.Price * s.Num);


                    Order order = new Order()
                    {
                        ID                = Guid.NewGuid(),
                        OrderCode         = DateTime.Now.ToString("BDyyyyMMddHHmmssfff") + CurrentUserID.ToString().PadLeft(13, '0'),
                        IfPay             = false,
                        SubmitTime        = DateTime.Now,
                        TotalPrice        = total,
                        UserID            = CurrentUserID,
                        PostUserName      = address.UserName,
                        PostUserPhone     = address.UserPhone,
                        PostAddress       = address.Address,
                        PostDetailAddress = address.DetailAddress,
                        OrderStatus       = 0,//待支付
                        IpAddress         = "",
                        IpCity            = ""
                    };
                    //发起支付 使用余额支付
                    if (model.PayMode == 0)
                    {
                        var user = _context.Users.Find(CurrentUserID);
                        if (user.UserBalance < total)
                        {
                            throw new Exception("余额不足,请充值");
                        }
                        user.UserBalance -= total;
                        order.IfPay       = true;
                    }
                    _context.Orders.Add(order);

                    foreach (var item in list)
                    {
                        OrderDetail orderDetail = new OrderDetail()
                        {
                            ID          = Guid.NewGuid(),
                            OrderID     = order.ID,
                            DBPeriodsID = item.DBPeriodsID,
                            DBNum       = item.Num,
                            DBPrice     = item.Num * item.Price,
                            DBPerPrice  = item.Price
                        };
                        _context.OrderDetails.Add(orderDetail);
                        ///获取所有的已参与记录
                        var dBPeriods = _context.DBPeriods.Find(item.DBPeriodsID);
                        if (dBPeriods == null)
                        {
                            throw new Exception("商品不存在或已删除");
                        }
                        else if (dBPeriods != null && dBPeriods.Status != 0)
                        {
                            throw new Exception("商品人数已满,请选择下一期夺宝");
                        }
                        //已使用的号
                        var oldPeriod = _context.DBOrderDetails.Where(s => s.DBPeriodsID == item.DBPeriodsID);

                        int[] baseCode = ProduceTicket(dBPeriods.NeedNum);
                        int[] hasCode  = oldPeriod.Select(s => s.DBTicket).ToArray();
                        var   overplus = baseCode.Except(hasCode).ToList();

                        Random random = new Random();
                        List <DBOrderDetail> dBOrderDetails = new List <DBOrderDetail>();
                        for (int i = 0; i < item.Num; i++)
                        {
                            int index = random.Next(0, overplus.Count);//0到length-1
                            dBOrderDetails.Add(new DBOrderDetail()
                            {
                                ID            = Guid.NewGuid(),
                                OrderDetailID = orderDetail.ID,
                                DBPeriodsID   = item.DBPeriodsID,
                                DBTicket      = overplus[index],
                                UserID        = CurrentUserID
                            });
                            overplus.RemoveAt(index);
                        }
                        _context.DBOrderDetails.AddRange(dBOrderDetails);
                        dBPeriods.OverplusNum = dBPeriods.OverplusNum - item.Num;
                        //如果是余额支付直接开奖
                        if (model.PayMode == 0)
                        {
                            if (dBPeriods.OverplusNum == 0)
                            {
                                dBPeriods.WaitOpenTime = DateTime.Now.AddMinutes(10);
                                dBPeriods.Status       = 1;//0 进行中 1正在开奖中2开奖成功3开奖失败
                                //OpenPeriods waitopen = new OpenPeriods();
                                //waitopen.WaitOpen(dBPeriods.ID);
                            }
                        }
                    }

                    ///0、1、2 余额、微信、支付宝
                    //发起支付
                    if (model.PayMode == 1)
                    {
                        //TODO 微信
                    }
                    else if (model.PayMode == 2)
                    {
                        //TODO 支付宝
                    }
                    //user UserBalance 自动保存
                    _context.ShopCarts.RemoveRange(list);
                    _context.SaveChanges();
                    tran.Commit();
                }
                return(new ObjectResult(FormatResult.Success("提交成功")));
            }
            catch (Exception e)
            {
                return(new ObjectResult(FormatResult.Failure(e.Message)));
            }
        }
コード例 #29
0
        public virtual async Task <IActionResult> Index()
        {
            List <T> models = new List <T>();

            using (var httpClient = new HttpClient())
            {
                var requestUri = $"{Configuration.DefaultAPI}/home/{CurrentHomeID}/{CurrentAreaName}/{CurrentControllerName}";
                httpClient.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("CurrentUserID", CurrentUserID.ToString());

                using (var response = await httpClient.GetAsync(requestUri))
                {
                    var content = await response.Content.ReadAsStringAsync();

                    if (response.IsSuccessStatusCode)
                    {
                        models = JsonConvert.DeserializeObject <List <T> >(content);
                    }
                }
            }

            ViewData["CanManage"] = CanManage;

            foreach (var model in models)
            {
                await SetGridItemActions(model);
            }

            return(View("_Grid", models));
        }
コード例 #30
0
        public async Task <IActionResult> Details(long?ID)
        {
            if (ID == null)
            {
                return(new Error404NotFoundViewResult());
            }

            var model = new U();

            using (var httpClient = new HttpClient())
            {
                var requestUri = $"{Configuration.DefaultAPI}/home/{CurrentHomeID}/{CurrentAreaName}/{(long)ID}";
                httpClient.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("CurrentUserID", CurrentUserID.ToString());

                using (var response = await httpClient.GetAsync(requestUri))
                {
                    string content = await response.Content.ReadAsStringAsync();

                    if (response.IsSuccessStatusCode)
                    {
                        model = JsonConvert.DeserializeObject <U>(content);
                    }
                }
            }

            if (model.ID > 0)
            {
                ViewData["CanManage"] = CanManage;

                await GetClingons(model);
                await SetObjectActions(model);
                await PopulateViewData(model);

                return(View("_Details", model));
            }
            else
            {
                return(new Error404NotFoundViewResult());
            }
        }