public async Task <ActivitiesSetRes> SetActivitiesDetails([FromBody] ActivitiesSetReq request) { var response = new ActivitiesSetRes(); try { if (request != null) { response = await _activitiesRepository.SetActivitiesDetails(request); } else { response.ResponseStatus.Status = "Failure"; response.ResponseStatus.ErrorMessage = "Request details can not be Null."; } } catch (Exception ex) { response.ResponseStatus.Status = "Failure"; response.ResponseStatus.ErrorMessage = "An Error Occurs " + ex.Message.ToString(); } response.QRFID = request.QRFID; return(response); }
public async Task <ActivitiesSetRes> SetActivitiesDetails(ActivitiesSetReq request) { ActivitiesSetRes ActivitiesSetRes = new ActivitiesSetRes(); UpdateResult resultFlag; try { var result = _MongoContext.mQuote.AsQueryable().Where(a => a.QRFID == request.QRFID).ToList(); if (result != null && result.Count > 0) { var resultPosition = _MongoContext.mPosition.AsQueryable().Where(a => a.QRFID == request.QRFID).FirstOrDefault(); if (resultPosition != null) { QRFCounterRequest qrfCounterRequest = new QRFCounterRequest(); qrfCounterRequest.CounterType = _configuration["CounterType:Activities"].ToString(); var resultActivities = resultPosition.Activities; if (resultActivities != null && resultActivities.ActivitiesDetails != null && resultActivities.ActivitiesDetails.Count > 0) { request.ActivitiesProperties.FindAll(f => !resultActivities.ActivitiesDetails.Exists(r => r.ActivityID == f.ActivityID)).ForEach(m => { m.ActivityID = m.ActivityID == 0 ? _genericRepository.GetNextReferenceNumber(qrfCounterRequest).LastReferenceNumber : m.ActivityID; m.CreateDate = DateTime.Now; m.EditDate = null; }); request.ActivitiesProperties.FindAll(f => resultActivities.ActivitiesDetails.Exists(r => r.ActivityID == f.ActivityID)).ForEach(m => { m.EditDate = DateTime.Now; }); if (request.SaveType.ToLower() == "complete") { resultFlag = await _MongoContext.mPosition.UpdateOneAsync(Builders <mPosition> .Filter.Eq("QRFID", request.QRFID), Builders <mPosition> .Update.Set("Activities.ActivitiesDetails", request.ActivitiesProperties)); ActivitiesSetRes.ResponseStatus.Status = resultFlag.MatchedCount > 0 ? "Success" : "Failure"; ActivitiesSetRes.ResponseStatus.ErrorMessage = resultFlag.MatchedCount > 0 ? "Saved Successfully." : "Activity Details not updated."; } else if (request.SaveType.ToLower() == "partial") { await _MongoContext.mPosition.FindOneAndUpdateAsync(m => m.QRFID == request.QRFID, Builders <mPosition> .Update.Set(m => m.Activities.ActivitiesDetails[-1], request.ActivitiesProperties[0])); ActivitiesSetRes.ResponseStatus.Status = "Success"; ActivitiesSetRes.ResponseStatus.ErrorMessage = "Saved Successfully"; } } else { mPosition objPosition = new mPosition(); request.ActivitiesProperties.ForEach(m => { m.CreateDate = DateTime.Now; m.EditDate = null; m.EditUser = ""; m.ActivityID = m.ActivityID == 0 ? _genericRepository.GetNextReferenceNumber(qrfCounterRequest).LastReferenceNumber : m.ActivityID; }); objPosition.QRFID = request.QRFID; objPosition.Activities.ActivitiesDetails = request.ActivitiesProperties; objPosition.Activities.CreateDate = DateTime.Now; objPosition.Activities.CreateUser = request.ActivitiesProperties.FirstOrDefault().CreateUser; objPosition.Activities.EditDate = null; objPosition.Activities.EditUser = ""; resultFlag = await _MongoContext.mPosition.UpdateOneAsync(Builders <mPosition> .Filter.Eq("QRFID", request.QRFID), Builders <mPosition> .Update.Set("Activities.ActivitiesDetails", request.ActivitiesProperties)); ActivitiesSetRes.ResponseStatus.Status = resultFlag.MatchedCount > 0 ? "Success" : "Failure"; ActivitiesSetRes.ResponseStatus.ErrorMessage = resultFlag.MatchedCount > 0 ? "Saved Successfully." : "Activity Details not updated."; } } else //first time insert { QRFCounterRequest qrfCounterRequest = new QRFCounterRequest(); qrfCounterRequest.CounterType = _configuration["CounterType:Activities"].ToString(); mPosition objPosition = new mPosition(); request.ActivitiesProperties.ForEach(m => { m.CreateDate = DateTime.Now; m.EditDate = null; m.EditUser = ""; m.ActivityID = m.ActivityID == 0 ? _genericRepository.GetNextReferenceNumber(qrfCounterRequest).LastReferenceNumber : m.ActivityID; }); objPosition.QRFID = request.QRFID; objPosition.Activities.ActivitiesDetails = request.ActivitiesProperties; objPosition.Activities.CreateDate = DateTime.Now; objPosition.Activities.CreateUser = request.ActivitiesProperties.FirstOrDefault().CreateUser; objPosition.Activities.EditDate = null; objPosition.Activities.EditUser = ""; await _MongoContext.mPosition.InsertOneAsync(objPosition); ActivitiesSetRes.ResponseStatus.Status = "Success"; } if (request.SaveType.ToLower() == "partial" && request.ActivitiesProperties.Count > 0) { ActivitiesSetRes.ActivityId = request.ActivitiesProperties[0].ActivityID; } } else { ActivitiesSetRes.ResponseStatus.ErrorMessage = "QRF ID not exist."; } } catch (Exception ex) { ActivitiesSetRes.ResponseStatus.ErrorMessage = ex.StackTrace; } return(ActivitiesSetRes); }