public OperationResult EvaluateComplaints(string api_account, long timeStamp, string sign, string token, long cpid, int satsf, int satsf1, int satsf2, string content) { if (string.IsNullOrWhiteSpace(token)) { return(new OperationResult <PaginatedList <Complaints> >(OperationCode.Error_Param_Empty)); } if (!_parameterValidateService.CheckTimestamp(timeStamp)) { return(new OperationResult <PaginatedList <Complaints> >(OperationCode.Error_TimeStamp)); } if (!TokenHelper.CheckToken(token)) { return(new OperationResult <PaginatedList <Complaints> >(OperationCode.Error_TokenExpiration)); } var apiAccount = _apiRepository.GetSingleByAccount(api_account); if (apiAccount == null) { return(new OperationResult <PaginatedList <Complaints> >(OperationCode.Error_ApiAccountNotExist)); } if (!checkSignForEvaluateComplaints(api_account, timeStamp, sign, token, cpid, satsf, satsf1, satsf2, content, apiAccount.Api_SecretKey)) { return(new OperationResult <PaginatedList <Complaints> >(OperationCode.Error_Sign)); } var theToken = TokenHelper.GetToken(token); var theCompanyId = new Guid(apiAccount.CompanyId); var user = _userRepository.GetSingleByKey(theToken.UserId); if (user == null) { return(new OperationResult <PaginatedList <Complaints> >(OperationCode.Error_UserNotExist)); } try { var cp = GetComplaintsById(cpid, theToken, user); if (cp.Status != (int)ComplaintStatus.Completed) { return(new OperationResult(OperationCode.Error_ComplaintsEvaluated)); } var customerReview = new CustomerReviews { ComplaintId = cpid, CreateTime = DateTime.Now, Content = content, Satisfaction = satsf, Satisfaction1 = satsf1, Satisfaction2 = satsf2 }; var complaintsProcessing = new ComplaintsProcessing { ComplaintId = cpid, OriginalStatus = ((ComplaintStatus)cp.Status).ToString(), ProcessingTime = DateTime.Now, Processor = user.USERNAME }; cp.Status = (int)ComplaintStatus.Evaluated; complaintsProcessing.CurrentStatus = ComplaintStatus.Evaluated.ToString(); complaintsProcessing.ProcessFlowNumber = cp.ComplaintsProcessing != null && cp.ComplaintsProcessing.Any() ? cp.ComplaintsProcessing.Max(x => x.ProcessFlowNumber) + 1 : 1; if (cp.ComplaintsProcessing == null) { cp.ComplaintsProcessing = new List <ComplaintsProcessing>(); } cp.ComplaintsProcessing.Add(complaintsProcessing); if (cp.CustomerReviews == null) { cp.CustomerReviews = new List <CustomerReviews>(); } cp.CustomerReviews.Add(customerReview); _repository.Edit(cp); _repository.Save(); } catch (Exception) { return(new OperationResult(OperationCode.Error_Unknown)); } return(new OperationResult(OperationCode.Success)); }