Beispiel #1
0
        /// <summary>
        /// Saves a new Buvera or updates an already existing Buvera.
        /// </summary>
        /// <param name="BuveraDTO">Buvera to be saved or updated.</param>
        /// <param name="userId">userId of the Buvera creating or updating</param>
        /// <returns>BuveraId</returns>
        public long SaveBuvera(BuveraDTO buveraDTO, string userId)
        {
            long buveraId = 0;

            if (buveraDTO.BuveraId == 0)
            {
                var buvera = new Buvera()
                {
                    TotalCost     = buveraDTO.TotalCost,
                    StoreId       = buveraDTO.StoreId,
                    FromSupplier  = buveraDTO.FromSupplier,
                    ToReceiver    = buveraDTO.ToReceiver,
                    BranchId      = buveraDTO.BranchId,
                    TotalQuantity = buveraDTO.TotalQuantity,
                    CreatedOn     = DateTime.Now,
                    TimeStamp     = DateTime.Now,
                    CreatedBy     = userId,
                    Deleted       = false,
                };

                this.UnitOfWork.Get <Buvera>().AddNew(buvera);
                this.UnitOfWork.SaveChanges();
                buveraId = buvera.BuveraId;



                return(buveraId);
            }

            else
            {
                var result = this.UnitOfWork.Get <Buvera>().AsQueryable()
                             .FirstOrDefault(e => e.BuveraId == buveraDTO.BuveraId);
                if (result != null)
                {
                    result.BuveraId      = buveraDTO.BuveraId;
                    result.TotalCost     = buveraDTO.TotalCost;
                    result.FromSupplier  = buveraDTO.FromSupplier;
                    result.ToReceiver    = buveraDTO.ToReceiver;
                    result.TotalQuantity = buveraDTO.TotalQuantity;
                    result.BranchId      = buveraDTO.BranchId;
                    result.StoreId       = buveraDTO.StoreId;
                    result.UpdatedBy     = userId;
                    result.TimeStamp     = DateTime.Now;
                    this.UnitOfWork.Get <Buvera>().Update(result);
                    this.UnitOfWork.SaveChanges();
                }
                return(buveraDTO.BuveraId);
            }
        }
        public long Save(Buvera model)
        {
            var BuveraId = _buveraService.SaveBuvera(model, userId);

            return(BuveraId);
        }
        public long IssueBuvera(Buvera buvera, string userId)
        {
            bool inOrOut = false;

            var fromSupplierStore = GetStoreName(buvera.StoreId);
            var toReceiverStore   = GetStoreName(Convert.ToInt64(buvera.ToReceiver));

            var buveraDTO = new DTO.BuveraDTO()
            {
                BuveraId      = buvera.BuveraId,
                TotalCost     = buvera.TotalCost,
                TotalQuantity = buvera.TotalQuantity,
                BranchId      = buvera.BranchId,
                FromSupplier  = fromSupplierStore,
                ToReceiver    = toReceiverStore,
                StoreId       = Convert.ToInt64(buvera.ToReceiver),
                Deleted       = buvera.Deleted,
                CreatedBy     = buvera.CreatedBy,
                CreatedOn     = buvera.CreatedOn
            };

            var buveraId = this._dataService.SaveBuvera(buveraDTO, userId);

            if (buvera.Grades != null)
            {
                if (buvera.Grades.Any())
                {
                    List <BuveraGradeSize> buveraGradeSizeList = new List <BuveraGradeSize>();

                    foreach (var grade in buvera.Grades)
                    {
                        var gradeId = grade.GradeId;
                        if (grade.Denominations != null)
                        {
                            if (grade.Denominations.Any())
                            {
                                foreach (var denomination in grade.Denominations)
                                {
                                    var sizeRate = GetRateOfAParticularSize(denomination.DenominationId);

                                    var buveraGradeSize = new BuveraGradeSize()
                                    {
                                        GradeId   = gradeId,
                                        SizeId    = denomination.DenominationId,
                                        BuveraId  = buveraId,
                                        StoreId   = Convert.ToInt64(buvera.ToReceiver),
                                        Amount    = Convert.ToDouble(denomination.Quantity * sizeRate),
                                        Rate      = sizeRate,
                                        Quantity  = denomination.Quantity,
                                        TimeStamp = DateTime.Now
                                    };
                                    buveraGradeSizeList.Add(buveraGradeSize);

                                    inOrOut = true;
                                    //Method that adds buvera into storeBuveraGradeSize table(storeBuvera stock)
                                    var storeBuveraGradeSize = new StoreBuveraGradeSizeDTO()
                                    {
                                        StoreId  = Convert.ToInt64(buvera.ToReceiver),
                                        GradeId  = buveraGradeSize.GradeId,
                                        SizeId   = buveraGradeSize.SizeId,
                                        Quantity = buveraGradeSize.Quantity,
                                    };

                                    this._dataService.SaveStoreBuveraGradeSize(storeBuveraGradeSize, inOrOut);

                                    //Method that updates buvera into storeBuveraGradeSize table(storeBuvera stock)
                                    var fromStoreBuveraGradeSize = new StoreBuveraGradeSizeDTO()
                                    {
                                        StoreId  = buvera.StoreId,
                                        GradeId  = buveraGradeSize.GradeId,
                                        SizeId   = buveraGradeSize.SizeId,
                                        Quantity = buveraGradeSize.Quantity,
                                    };

                                    this._dataService.SaveStoreBuveraGradeSize(fromStoreBuveraGradeSize, false);
                                }
                            }
                        }
                    }
                    this._dataService.PurgeBuveraGradeSize(buveraId);
                    this.SaveBuveraGradeSizeList(buveraGradeSizeList);
                }
            }
            return(buveraId);
        }
        /// <summary>
        /// Maps Buvera EF object to Buvera Model Object and
        /// returns the Buvera model object.
        /// </summary>
        /// <param name="result">EF Buvera object to be mapped.</param>
        /// <returns>Buvera Model Object.</returns>
        public Buvera MapEFToModel(EF.Models.Buvera data)
        {
            var buvera = new Buvera()
            {
                TotalCost     = data.TotalCost,
                BranchName    = data.Branch != null? data.Branch.Name:"",
                BranchId      = data.BranchId,
                TotalQuantity = data.TotalQuantity,
                StoreId       = data.StoreId,
                BuveraId      = data.BuveraId,
                FromSupplier  = data.FromSupplier,
                ToReceiver    = data.ToReceiver,
                StoreName     = data.Store != null? data.Store.Name:"",
                CreatedOn     = data.CreatedOn,
                TimeStamp     = data.TimeStamp,
                Deleted       = data.Deleted,
                CreatedBy     = _userService.GetUserFullName(data.AspNetUser),
                UpdatedBy     = _userService.GetUserFullName(data.AspNetUser2)
            };

            if (data.BuveraGradeSizes != null)
            {
                if (data.BuveraGradeSizes.Any())
                {
                    List <Grade> grades         = new List <Grade>();
                    var          distinctGrades = data.BuveraGradeSizes.GroupBy(g => g.GradeId).Select(o => o.First()).ToList();
                    foreach (var buveraGradeSize in distinctGrades)
                    {
                        var grade = new Grade()
                        {
                            GradeId   = buveraGradeSize.Grade.GradeId,
                            Value     = buveraGradeSize.Grade.Value,
                            CreatedOn = buveraGradeSize.Grade.CreatedOn,
                            TimeStamp = buveraGradeSize.Grade.TimeStamp,
                            Deleted   = buveraGradeSize.Grade.Deleted,
                            CreatedBy = _userService.GetUserFullName(buveraGradeSize.Grade.AspNetUser),
                            UpdatedBy = _userService.GetUserFullName(buveraGradeSize.Grade.AspNetUser1),
                        };
                        List <Denomination> denominations = new List <Denomination>();
                        if (buveraGradeSize.Grade.BuveraGradeSizes != null)
                        {
                            if (buveraGradeSize.Grade.BuveraGradeSizes.Any())
                            {
                                var distinctSizes = buveraGradeSize.Grade.BuveraGradeSizes.GroupBy(s => s.SizeId).Select(o => o.First()).ToList();
                                foreach (var ogs in distinctSizes)
                                {
                                    var denomination = new Denomination()
                                    {
                                        DenominationId = ogs.SizeId,
                                        Value          = ogs.Size != null ? ogs.Size.Value : 0,
                                        Quantity       = ogs.Quantity
                                    };
                                    //  Buvera.TotalQuantity += (ogs.Quantity * ogs.Size.Value);
                                    denominations.Add(denomination);
                                }
                            }
                            grade.Denominations = denominations;
                        }
                        grades.Add(grade);
                    }
                    buvera.Grades = grades;
                }
            }

            return(buvera);
        }