public async Task GroupLeave(GroupLeave leave) { const string groupLeaveMessage = "Очень жаль, что ты решил отписаться от группы 😢\n" + "Если тебе что-то не понравилось или ты не разобрался с ботом, то всегда можешь написать " + "администрации об этом через команду 'админ *сообщение*' (подробнее смотри в справке)."; _logger.Information("Пользователь id{0} покинул группу", leave.UserId); await SendMessageToAdmins(leave.UserId.Value, "отписался :С"); if (leave.IsSelf.HasValue && !leave.IsSelf.Value) { return; } await TrySendMessageToUser(leave.UserId.Value, groupLeaveMessage); }
/// <summary> /// Разобрать из json. /// </summary> /// <param name="response"> Ответ сервера. </param> /// <returns> </returns> public static GroupUpdate FromJson(VkResponse response) { var fromJson = JsonConvert.DeserializeObject <GroupUpdate>(response.ToString()); var resObj = response["object"]; switch (fromJson.Type) { case GroupLongPollUpdateType.MessageNew: case GroupLongPollUpdateType.MessageEdit: case GroupLongPollUpdateType.MessageReply: fromJson.Message = resObj; fromJson.UserId = fromJson.Message.FromId; break; case GroupLongPollUpdateType.MessageAllow: fromJson.MessageAllow = MessageAllow.FromJson(resObj); fromJson.UserId = fromJson.MessageAllow.UserId; break; case GroupLongPollUpdateType.MessageDeny: fromJson.MessageDeny = MessageDeny.FromJson(resObj); fromJson.UserId = fromJson.MessageDeny.UserId; break; case GroupLongPollUpdateType.PhotoNew: fromJson.Photo = resObj; break; case GroupLongPollUpdateType.PhotoCommentNew: case GroupLongPollUpdateType.PhotoCommentEdit: case GroupLongPollUpdateType.PhotoCommentRestore: fromJson.PhotoComment = PhotoComment.FromJson(resObj); fromJson.UserId = fromJson.PhotoComment.FromId; break; case GroupLongPollUpdateType.PhotoCommentDelete: fromJson.PhotoCommentDelete = PhotoCommentDelete.FromJson(resObj); fromJson.UserId = fromJson.PhotoCommentDelete.DeleterId; break; case GroupLongPollUpdateType.AudioNew: fromJson.Audio = resObj; break; case GroupLongPollUpdateType.VideoNew: fromJson.Video = resObj; break; case GroupLongPollUpdateType.VideoCommentNew: case GroupLongPollUpdateType.VideoCommentEdit: case GroupLongPollUpdateType.VideoCommentRestore: fromJson.VideoComment = VideoComment.FromJson(resObj); fromJson.UserId = fromJson.VideoComment.FromId; break; case GroupLongPollUpdateType.VideoCommentDelete: fromJson.VideoCommentDelete = VideoCommentDelete.FromJson(resObj); fromJson.UserId = fromJson.VideoCommentDelete.DeleterId; break; case GroupLongPollUpdateType.WallPostNew: case GroupLongPollUpdateType.WallRepost: fromJson.WallPost = WallPost.FromJson(resObj); fromJson.UserId = fromJson.WallPost.FromId > 0 ? fromJson.WallPost.FromId : null; break; case GroupLongPollUpdateType.WallReplyNew: case GroupLongPollUpdateType.WallReplyEdit: case GroupLongPollUpdateType.WallReplyRestore: fromJson.WallReply = WallReply.FromJson(resObj); fromJson.UserId = fromJson.WallReply.FromId; break; case GroupLongPollUpdateType.WallReplyDelete: fromJson.WallReplyDelete = WallReplyDelete.FromJson(resObj); fromJson.UserId = fromJson.WallReplyDelete.DeleterId; break; case GroupLongPollUpdateType.BoardPostNew: case GroupLongPollUpdateType.BoardPostEdit: case GroupLongPollUpdateType.BoardPostRestore: fromJson.BoardPost = BoardPost.FromJson(resObj); fromJson.UserId = fromJson.BoardPost.FromId > 0 ? fromJson.BoardPost.FromId : (long?)null; break; case GroupLongPollUpdateType.BoardPostDelete: fromJson.BoardPostDelete = BoardPostDelete.FromJson(resObj); break; case GroupLongPollUpdateType.MarketCommentNew: case GroupLongPollUpdateType.MarketCommentEdit: case GroupLongPollUpdateType.MarketCommentRestore: fromJson.MarketComment = MarketComment.FromJson(resObj); fromJson.UserId = fromJson.MarketComment.FromId; break; case GroupLongPollUpdateType.MarketCommentDelete: fromJson.MarketCommentDelete = MarketCommentDelete.FromJson(resObj); fromJson.UserId = fromJson.MarketCommentDelete.DeleterId; break; case GroupLongPollUpdateType.GroupLeave: fromJson.GroupLeave = GroupLeave.FromJson(resObj); fromJson.UserId = fromJson.GroupLeave.IsSelf == true ? fromJson.GroupLeave.UserId : null; break; case GroupLongPollUpdateType.GroupJoin: fromJson.GroupJoin = GroupJoin.FromJson(resObj); fromJson.UserId = fromJson.GroupJoin.UserId; break; case GroupLongPollUpdateType.UserBlock: fromJson.UserBlock = UserBlock.FromJson(resObj); fromJson.UserId = fromJson.UserBlock.AdminId; break; case GroupLongPollUpdateType.UserUnblock: fromJson.UserUnblock = UserUnblock.FromJson(resObj); fromJson.UserId = fromJson.UserUnblock.ByEndDate == true ? null : fromJson.UserUnblock.AdminId; break; case GroupLongPollUpdateType.PollVoteNew: fromJson.PollVoteNew = PollVoteNew.FromJson(resObj); fromJson.UserId = fromJson.PollVoteNew.UserId; break; case GroupLongPollUpdateType.GroupChangePhoto: fromJson.GroupChangePhoto = GroupChangePhoto.FromJson(resObj); fromJson.UserId = fromJson.GroupChangePhoto.UserId; break; case GroupLongPollUpdateType.GroupOfficersEdit: fromJson.GroupOfficersEdit = GroupOfficersEdit.FromJson(resObj); fromJson.UserId = fromJson.GroupOfficersEdit.AdminId; break; } return(fromJson); }
public ActionResult SaveGroup(LeaveReqViewModel model, IEnumerable <GroupLeaveViewModel> grid1, int[] grid2, OptionsViewModel moreInfo) { List <Error> errors = new List <Error>(); if (ModelState.IsValid) { if (ServerValidationEnabled) { errors = _hrUnitOfWork.LeaveRepository.CheckForm(new CheckParm { CompanyId = CompanyId, ObjectName = "GroupLeave", TableName = "LeaveRequests", Columns = Models.Utils.GetColumnViews(ModelState.Where(a => !a.Key.Contains('.'))), ParentColumn = "CompanyId", Culture = Language }); if (errors.Count() > 0) { foreach (var e in errors) { foreach (var errorMsg in e.errors) { ModelState.AddModelError(errorMsg.field, errorMsg.message); } } return(Json(Models.Utils.ParseFormErrors(ModelState))); } } } else { return(Json(Models.Utils.ParseFormErrors(ModelState))); } string message = "OK"; LeaveType type = _hrUnitOfWork.LeaveRepository.GetLeaveType(model.TypeId); int PeriodId; List <ErrorMessage> Errors = _hrUnitOfWork.LeaveRepository.CheckGroupLeave(model, type, Language, out PeriodId); if (Errors.Count() > 0) { return(Json(Errors.Select(a => new { Field = a.field, Message = a.message }))); } byte version; byte.TryParse(Request.Form["version"], out version); if (grid1 != null) { GroupLeave groupLeave = new GroupLeave(); AutoMapper(new AutoMapperParm() { Source = model, Destination = groupLeave, Version = version, ObjectName = "GroupLeave", Options = moreInfo }); groupLeave.PeriodId = PeriodId; groupLeave.ApprovalStatus = 6; //Approved groupLeave.CompanyId = CompanyId; groupLeave.CreatedUser = UserName; groupLeave.CreatedTime = DateTime.Now; _hrUnitOfWork.LeaveRepository.Add(groupLeave); foreach (var item in grid1) { GroupLeaveLog leaveLog = new GroupLeaveLog(); leaveLog.GroupLeave = groupLeave; leaveLog.EmpId = item.EmpId; leaveLog.Approved = item.Approve; leaveLog.Success = item.Success; leaveLog.ReasonCode = item.ReasonCode; leaveLog.Reason = item.Reason; _hrUnitOfWork.LeaveRepository.Add(leaveLog); if (item.Approve) {//Leave Trans LeaveRequest request = new LeaveRequest { EmpId = item.EmpId, TypeId = model.TypeId, PeriodId = PeriodId, CompanyId = CompanyId, ActualStartDate = model.StartDate, ActualNofDays = model.NofDays }; _hrUnitOfWork.LeaveRepository.AddAcceptLeaveTrans(request, UserName); } } errors = SaveChanges(Language); if (errors.Count > 0) { message = errors.First().errors.First().message; } } return(Json(message)); }