Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        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);
        }